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