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 packageFlutter 中使用 graphql,因为我不想使用查询/变异小部件。我正在将 watchQuery 用于 getorderByOrderId 并监听更改。当调用 updateOrderStatus 查询时,我会更新缓存,以便 watchQuery 获取更改。然而,当第一次状态改变时,它工作正常。缓存已更新,watchquery 获取更改。但是当下次状态再次更改时,cache.readQuery(req) 为给定查询返回空值。因此,这只适用一次。我不明白为什么第二次是空的。错在哪里?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)