flutter - 如何在 Flutter 中缓存来自 GraphQL 的查询和变异?
问题描述
我有一个从 GraphQL 检索数据的应用程序,该应用程序有查询和突变请求,该应用程序的每个屏幕都有至少一个或多个查询来从 GraphQL 检索数据,其中一些有突变请求来发送数据,所有查询都接收值从早期的屏幕中获取与打开的内容一致的新数据。
我正在使用包hasura_connect来检索和发送数据,该包接受一个拦截器,我将要测试包shared_preferences_cache_interceptor但它只缓存查询,而不是突变,另一个问题是,查询在发出请求之前接收来自早期屏幕的参数.
考虑到这种情况,缓存查询和变异的最佳方法是什么?
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));
}
}
}
解决方案
推荐阅读
- swift - SwiftUI ObservedObject 导致不需要的可见视图更新
- javascript - 当特殊字符进入时,在jsp中动态创建javascript函数会中断
- reactjs - 如何处理 redux 在刷新/重新加载时清除状态
- payfast - 错误:400 错误请求很遗憾,我们无法处理您的交易。出现问题:未收到付款数据
- javascript - React/redux-saga:如何定期从服务器更新其他用户所做的数据,同时对其进行更改?
- node.js - 向 node.js 发出动态命令行请求
- intellij-idea - IntelliJ IDEA:移动到“在路径中查找”中出现的对话框编辑器的快捷方式
- python - 为什么 Python 认为这是一个元组?
- java - 在 JFrame 中平滑移动 JLabel
- javascript - 在 switch case 中使用 !(not) 运算符