dart - 如何在 Flutter 中将 RefreshIndicator 与 FutureBuilder 一起使用?
问题描述
我试图找出一种方法来在FutureBuilder
加载完成时向周围的类指示。RefreshIndicator
将 aFuture
作为参数并在Future
完成时停止显示刷新指示器。我无法访问传递给 的完全相同的Future
变量FutureBuilder
,尤其是当它们位于两个单独的类中时,除非我可以传递对一个的引用并且当它在另一个类中完成时,我会知道...
解决方案
我也在寻找这个答案。最后我想通了...
这是我的做法
FutureBuilder<String>(
future: _calculation,
// a previously-obtained Future<String> or null
builder: (BuildContext context,
AsyncSnapshot<String> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
return Text('Press button to start.');
case ConnectionState.active:
case ConnectionState.waiting:
return Text('Awaiting result...');
case ConnectionState.done:
if (snapshot.hasError)
return Text('Error: ${snapshot.error}');
return new RefreshIndicator(
key: _refreshIndicatorKey,
color: Colors.blue,
onRefresh: () {
return _calculation = getCalculation(); // EDITED
},
child: SingleChildScrollView(
physics: AlwaysScrollableScrollPhysics(),
child: Text('Result: ${snapshot.data}')
)
);
break;
default:
return null;
}
},
)
Future<String> getCalculation() async {
try {
/*Write your API here or what ever u want to get when pull to refresh*/
return ""/*the value of api*/; //EDITED
} catch (e) {
///Handle Exception here. So in FutureBuilder we can capture it in snapshot.hasError
return Future.error(e.toString());
}
}
推荐阅读
- python - 即使用户和密码正确,Postgresql/psycopg2 密码验证错误
- tensorflow - Inception v3 的迁移学习返回相同的预测
- java - 如何以编程方式触发 Spark Java Web 框架请求
- mysql - MYSQL - 返回查询 A 或查询 B,但不能同时返回。如果两者都存在,则查询 A 的返回结果
- c# - 无法从单独文件夹的控制器访问视图
- regex - 正则表达式关键字搜索接近日期
- r - 计算总和并处理 NA
- stm32 - STM32F429 发现 - 无法使用 SPI 和 DMA 来驱动 WS2812B LED
- webassembly - WASM 运行时何时会集成到 Envoy 代理中
- php - 如何引用未知列?