Flutter GrapGql颤振包设置中的缓存以及如何检查其工作

Flutter GrapGql颤振包设置中的缓存以及如何检查其工作,flutter,dart,graphql,Flutter,Dart,Graphql,我正在尝试在我的应用程序中实现graphQl颤振包 一切都很好,但缓存有一些问题 如果我们从这个包中运行这个示例,我们可以看到缓存不起作用 在我的应用程序中,我也不能提高速度,它总是在线获取数据 此示例中的代码 class GraphQLWidgetScreen extends StatelessWidget { const GraphQLWidgetScreen() : super(); @override Widget build(BuildContext context)

我正在尝试在我的应用程序中实现graphQl颤振包

一切都很好,但缓存有一些问题

如果我们从这个包中运行这个示例,我们可以看到缓存不起作用

在我的应用程序中,我也不能提高速度,它总是在线获取数据

此示例中的代码

class GraphQLWidgetScreen extends StatelessWidget {
  const GraphQLWidgetScreen() : super();

  @override
  Widget build(BuildContext context) {
    final HttpLink httpLink = HttpLink(
      uri: 'https://api.github.com/graphql',
    );

    final AuthLink authLink = AuthLink(
      // ignore: undefined_identifier
      getToken: () async => 'Bearer $YOUR_TOKEN',
    );

    Link link = authLink.concat(httpLink);
    if (ENABLE_WEBSOCKETS) {
      final WebSocketLink websocketLink = WebSocketLink(
        url: 'ws://localhost:8080/ws/graphql',
        config: SocketClientConfig(
            autoReconnect: true, inactivityTimeout: Duration(seconds: 15)),
      );

      link = link.concat(websocketLink);
    }

    final ValueNotifier<GraphQLClient> client = ValueNotifier<GraphQLClient>(
      GraphQLClient(
        cache: OptimisticCache(
          dataIdFromObject: typenameDataIdFromObject,
        ),
        link: link,
      ),
    );

    return GraphQLProvider(
      client: client,
      child: const CacheProvider(
        child: MyHomePage(title: 'GraphQL Widget'),
      ),
    );
  }
}
GraphQLWidgetScreen类扩展了无状态小部件{
const GraphQLWidgetScreen():super();
@凌驾
小部件构建(构建上下文){
最终HttpLink HttpLink=HttpLink(
uri:'https://api.github.com/graphql',
);
最终AuthLink AuthLink=AuthLink(
//忽略:未定义的\u标识符
getToken:()async=>“持有者$YOUR_令牌”,
);
Link=authLink.concat(httpLink);
如果(启用_WEBSOCKETS){
最终WebSocketLink WebSocketLink=WebSocketLink(
url:'ws://localhost:8080/ws/graphql',
配置:SocketClientConfig(
autoReconnect:true,inactivityTimeout:Duration(秒数:15)),
);
link=link.concat(websocketLink);
}
最终ValueNotifier客户端=ValueNotifier(
GraphQLClient(
缓存:OptimisticCache(
dataIdFromObject:typenameDataIdFromObject,
),
链接:链接,
),
);
返回GraphQLProvider(
客户:客户,,
子:常量缓存提供程序(
子:MyHomePage(标题:“GraphQL小部件”),
),
);
}
}
显示缓存不工作的动画

所以,问题是-什么是实现缓存的正确方法,以及如何检查它的工作原理


谢谢大家!

这些示例是独立的,因此它们使用单独的客户端和缓存。这样做的结果是,它是。换句话说,每次导航到示例的路径时,都会得到一个新的缓存,因此无法看到缓存效果。有关可以查看缓存是否正常工作的更具体的示例,请参见()

最后,我使用BLoC模式创建了自己的缓存,因为我没有找到如何使用此包:)