微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter graphql 使用带有 hive 的缓存,当使用警察 'cacheAndNetwork' 调用查询时,它总是使用没有缓存的网络

如何解决Flutter graphql 使用带有 hive 的缓存,当使用警察 'cacheAndNetwork' 调用查询时,它总是使用没有缓存的网络

Flutter graphql 使用带有 hive 的缓存,当使用警察 'cacheAndNetwork' 调用查询时,它总是使用没有缓存的网络

这是我的代码

    Future<QueryResult> query(String query,{Map<String,dynamic> variables}) async {
    QueryOptions options = QueryOptions(
      document: gql(query),variables: variables,fetchPolicy: FetchPolicy.cacheAndNetwork,errorPolicy: ErrorPolicy.none,cacheRereadPolicy: CacheRereadPolicy.mergeOptimistic,);

    final result = await _client.query(options);

    return result;
  }

它总是从网络返回,实际上,它应该按照graphql文档中描述的方式工作“'cacheAndNetwork'首先从缓存返回结果(如果存在),然后在可用时返回网络结果。"

这是我的 GraphQL 客户端

  GraphQLClient _client;
  Client httpClient;

  void initClient(session) {
    if (_client != null) return;

    final token = session.getAccesstoken().getJwtToken();

    final HttpLink _httpLink = HttpLink(
      'https://*************/graphql',defaultHeaders: {
        'x-api-key': '************','Content-Type': '*************'
      },httpClient: this.httpClient,);

    final AuthLink _authLink = AuthLink(getToken: () => token);

    final Link _link = _authLink.concat(_httpLink);

    _client = GraphQLClient(
      cache: GraphQLCache(
        store: HiveStore(),),link: _link,);
  }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。