我正在使用Flutter graphql_client,其实现方式与this example
差不多我的客户端创建如下:
abstract class AbstractAdapter {
Link get httpLink;
GraphQLClient client;
AbstractAdapter() {
client = GraphQLClient(cache: InMemoryCache(), link: httpLink);
}
Future<QueryResult> query(QueryOptions options) {
return client.query(options);
}
}
它工作得很好,但是问题出在缓存上 如果我发送相同的突变两次,它将返回缓存的结果,而不是再次发送!
感谢任何帮助。
答案 0 :(得分:1)
您必须在 QueryOptions 和 MutationOptions 、 fetchPolicy 属性中使用 FetchPolicy.networkOnly
String query, Map<String, dynamic> variables) async {
QueryOptions options = QueryOptions(
documentNode: gql(query),
variables: variables,
fetchPolicy: FetchPolicy.networkOnly);
final result = await _client.query(options);
return result;
}
Future<QueryResult> performMutation(
String query, Map<String, dynamic> variables) async {
MutationOptions options = MutationOptions(
documentNode: gql(query),
variables: variables,
fetchPolicy: FetchPolicy.networkOnly);
final result = await _client.mutate(options);
return result;
}
答案 1 :(得分:0)
我发现了问题, 我试图在查询api上发送变异,这将返回上次缓存的响应,这对变异不利。
我已将带有MutationOptions的变异查询添加到我的GraphQL适配器中,如下所示:
abstract class AbstractAdapter {
Link get httpLink;
GraphQLClient client;
AbstractAdapter() {
client = GraphQLClient(cache: InMemoryCache(), link: httpLink);
}
Future<QueryResult> query(QueryOptions options) {
return client.query(options);
}
Future<QueryResult> mutate(MutationOptions options) {
return client.mutate(options);
}
}