我正在尝试找到一种方法,以在FutureBuilder
完成加载时指示周围的类。RefreshIndicator
将a Future
作为参数,并在Future
完成时停止显示刷新指示符。我无法访问传递给的完全相同的Future
变量FutureBuilder
,尤其是当它们位于两个单独的类中时,除非我可以传递对一个的引用,而当它在另一个类中完成时,我就会知道...
Sol*_*f93 13
我也在寻找这个答案。最后我想通了...
这是我做的
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(
SingleChildScrollView
physics: AlwaysScrollableScrollPhysics(),
child: Text('Result: ${snapshot.data}')
)
);
break;
default:
return null;
}
},
)
Future<String> getCalculation() async {
/*Write your API here or what ever u want to get when pull to refresh*/
return null;
}
Run Code Online (Sandbox Code Playgroud)
您必须访问快照,提供builder
参数:
因此,snapshot.data 为您带来未来。
new FutureBuilder<String>(
future: _calculation, // a Future<String> or null
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none: return new Text('Press button to start');
case ConnectionState.waiting: return new Text('Awaiting result...');
default:
if (snapshot.hasError)
return new Text('Error: ${snapshot.error}');
else
return new Text('Result: ${snapshot.data}');
}
},
)
Run Code Online (Sandbox Code Playgroud)
例子: https: //flutter.io/cookbook/networking/background-parsing/
文档: https: //docs.flutter.io/flutter/widgets/FutureBuilder-class.html
归档时间: |
|
查看次数: |
2310 次 |
最近记录: |