如何解决Flutter graphql 缓存更新仅工作一次
static Future<QueryResult> updateOrderStatus({required dynamic input,required String status,required String orderId,required String buyerId}) {
final client = GraphqlClient.getGraphQlClient();
print(input);
final Mutationoptions options = Mutationoptions(
document: gql(OrderMutaions.updateOrderStatus),variables: {'input': input},update: (cache,result) {
print(orderId);
print(buyerId);
final req = QueryOptions(
document: gql(OrderQueries.getorderByOrderId),variables: {
'input': {"orderId": orderId,"buyerUid": buyerId},},).asRequest;
final response = cache.readQuery(req);
print('cache response');
print(response);
response?["getorderByOrderId"]["status"] = status;
print('cache response new');
print(response);
if (response != null) {
cache.writeQuery(
req,broadcast: true,data: response,);
}
return cache;
},);
return client.mutate(options);
}
我正在使用 this package 在 Flutter 中使用 graphql,因为我不想使用查询/变异小部件。我正在将 watchQuery 用于 getorderByOrderId 并监听更改。当调用 updateOrderStatus 查询时,我会更新缓存,以便 watchQuery 获取更改。然而,当第一次状态改变时,它工作正常。缓存已更新,watchquery 获取更改。但是当下次状态再次更改时,cache.readQuery(req) 为给定查询返回空值。因此,这只适用一次。我不明白为什么第二次是空的。错在哪里?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。