dart - 不使用 FutureBuilder 检索数据
问题描述
我想在不使用 FutureBuilder 方法的情况下检索我的数据
这是我的方法:
Future<bool> fetchJointures(http.Client client) async {
final response = ('{"isInteresses": false}');
return compute(parseJointures, response.body);
}
bool parseJointures(String responseBody) {
final jsonParsed = json.decode(responseBody);
return jsonParsed['isInteresses'];
}
以及此示例如何:https ://flutter.io/docs/cookbook/networking/background-parsing显示数据:
FutureBuilder<bool>(
future: fetchJointures(http.Client()),
builder: (context, snapshot) {
if (snapshot.hasError) print(snapshot.error);
return A_Widget(data : snapshot.data);
},
);
我想检索我的数据并将其存储在这样的 var 中:
布尔数据=快照。数据;
最后,我搜索如何检索我的数据并将其存储在 var 而不是小部件的参数中。
解决方案
您遇到的问题是由于您可能没有为您的应用程序设置架构,因此您的状态、业务逻辑和 ui 代码被混合到一个地方。
您想要做的是能够独立于将数据绑定到 FutureBuilder 来请求数据(我最近做了同样的事情)。您需要首先将所有操作逻辑与 UI 分离,因此您需要某种架构。它们有很多,但我发现最有用的两个是:
范围模型。对于一个体面的范围模型教程看看这个
Redux(在你目前的情况下矫枉过正)
例如,这是我的 notices_model 文件中的一个函数。
Future fetchNotices() async {
if (_notices == null || _notices.length == 0) {
_notices = await _mobileApi.getNotices();
notifyListeners();
}
}
您看到的 _notices 有一个 List 类型的局部变量,我通过属性公开。所以简而言之。
设置一个架构,将您的视图逻辑与您的操作/业务逻辑分开
绑定到视图逻辑中的属性并正常执行操作。
还可以在他们的 github 上查看FlutterSamples的架构和示例
推荐阅读
- excel - 使用 PowerShell 修剪 Excel 单元格
- java - Java 字符串转日期格式
- ios - 如何在 Swift 中不断更新 ULabel 的文本
- c# - 为自动完成控件绑定继承列表
- javascript - 在第 8 面墙 aframe-js 中播放动画时,动画播放有延迟
- python - 为什么使用全局变量给出未定义?
- php - 将自定义随机过滤器添加到 Timber/Twig
- xml - 使用“复制”输入 xml u XSLT 代码添加外部元素
- django - Django admin list_filter:基于用户的 RelatedFieldListFilter
- raku - 像函数一样传递运算符