Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在Flatter中缓存来自GraphQL的查询和变异?_Flutter_Dart_Caching_Graphql - Fatal编程技术网

Flutter 如何在Flatter中缓存来自GraphQL的查询和变异?

Flutter 如何在Flatter中缓存来自GraphQL的查询和变异?,flutter,dart,caching,graphql,Flutter,Dart,Caching,Graphql,我有一个从GraphQL检索数据的应用程序,该应用程序有查询和变异请求,该应用程序的每个屏幕都至少有一个或多个查询从GraphQL检索数据,其中一些屏幕有变异请求发送数据,所有查询都从以前的屏幕接收值,以根据打开的内容获取新数据 我使用包来检索和发送数据,包接受一个拦截器,我将测试包,但它只缓存查询,而不是变异,另一个问题是,查询在发出请求之前接收来自早期屏幕的参数 考虑到这种情况,缓存查询和变异的最佳方法是什么 import 'package:hasura_connect/hasura_con

我有一个从GraphQL检索数据的应用程序,该应用程序有查询和变异请求,该应用程序的每个屏幕都至少有一个或多个查询从GraphQL检索数据,其中一些屏幕有变异请求发送数据,所有查询都从以前的屏幕接收值,以根据打开的内容获取新数据

我使用包来检索和发送数据,包接受一个拦截器,我将测试包,但它只缓存查询,而不是变异,另一个问题是,查询在发出请求之前接收来自早期屏幕的参数

考虑到这种情况,缓存查询和变异的最佳方法是什么

import 'package:hasura_connect/hasura_connect.dart';
import 'package:meta/meta.dart';

class GraphQLHelper {

  static final String host = 'https://apigraphql.staging....';

  static HasuraConnect _hasuraConnect;

  static Future<dynamic> query({
    String path = "",
    @required String docQuery,
    @required Map<String, dynamic> variables,
    Map<String, String> headers
    }) async{


    _hasuraConnect = HasuraConnect(
      host+path,
      headers: headers,
      reconnectionAttemp: 0
    );

    try{

      var data = await _hasuraConnect.query(
          docQuery,
          variables: variables,
      );

      //print("query DATA: $data");

      return data;

    } catch(e){
      print("query ERROR: $e");
      CustomToast.error(Errors.get(e));
      return null;
    }


  }

  static Future<dynamic> mutation({
    String path = "",
    @required String docMutation,
    @required Map<String, dynamic> variables,
    Map<String, String> headers}) async{


    _hasuraConnect = HasuraConnect(
        host+path,
        headers: headers,
        reconnectionAttemp: 0
    );

    try{

      var data = await _hasuraConnect.mutation(
          docMutation,
          variables: variables
      );

      //print("mutation DATA: $data");

      return data;

    } catch(e){
      print("mutation ERROR: $e");
      CustomToast.error(Errors.get(e));
    }

  }


}
import'包:hasura_connect/hasura_connect.dart';
导入“package:meta/meta.dart”;
类GraphQLHelper{
静态最终字符串https://apigraphql.staging....';
静态HasuraConnect _HasuraConnect;
静态未来查询({
字符串路径=”,
@必需的字符串docQuery,
@必需的映射变量,
地图标题
})异步的{
_hasuraConnect=hasuraConnect(
主机+路径,
标题:标题,
重新连接:0
);
试一试{
var data=await\u hasuraConnect.query(
docQuery,
变量:变量,
);
//打印(“查询数据:$DATA”);
返回数据;
}捕获(e){
打印(“查询错误:$e”);
CustomToast.error(Errors.get(e));
返回null;
}
}
静态未来突变({
字符串路径=”,
@必需的字符串类型,
@必需的映射变量,
映射头})异步{
_hasuraConnect=hasuraConnect(
主机+路径,
标题:标题,
重新连接:0
);
试一试{
var data=await\u hasuraConnect.com(
DOC突变,
变量:变量
);
//打印(“突变数据:$DATA”);
返回数据;
}捕获(e){
打印(“变异错误:$e”);
CustomToast.error(Errors.get(e));
}
}
}