微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter graphql 缓存更新仅工作一次

如何解决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 举报,一经查实,本站将立刻删除。