问题描述
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 (将#修改为@)