Flutter graphql using cache with hive, when calling query with police 'cacheAndNetwork' it always uses the network without the cache

Viewed 704

Flutter graphql using cache with hive, when calling query with police 'cacheAndNetwork' it always uses the network without the cache

Here is caple of my code

    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;
  }

It returns always from the network, actually, it should work how it's described in the documentation of graphql "'cacheAndNetwork' returns result from cache first (if it exists), then return network result once it's available."

Here is my GraphQL client

  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,
    );
  }
0 Answers
Related