赞
踩
首先先来介绍一下FutureBuilder的使用:
FutureBuilder类主要需要两个参数:
//FutureBuilder控件
new FutureBuilder<String>(
future: _calculation, // 用户定义的需要异步执行的代码,类型为Future<String>或者null的变量或函数
builder: (BuildContext context, AsyncSnapshot<String> snapshot) { //snapshot就是_calculation在时间轴上执行过程的状态快照
switch (snapshot.connectionState) {
case ConnectionState.none: return new Text('Press button to start'); //如果_calculation未执行则提示:请点击开始
case ConnectionState.waiting: return new Text('Awaiting result...'); //如果_calculation正在执行则提示:加载中
default: //如果_calculation执行完毕
if (snapshot.hasError) //若_calculation执行出现异常
return new Text('Error: ${snapshot.error}');
else //若_calculation执行正常完成
return new Text('Result: ${snapshot.data}');
}
},
FutureBuilder通过子属性future获取用户需要异步处理的代码,用builder回调函数暴露出异步执行过程中的快照。我们通过builder的参数snapshot暴露的快照属性,定义好对应状态下的处理代码,即可实现异步执行时的交互逻辑。
这里不再做更详细的介绍,主要说一下适用范围:
使用FutureBuilder时可以在数据获取过程中,和数据获取情况进行表示。
但是使用FutureBuilder时最适用的是数据一次就获取,不需要再次或频繁获取数据,改变页面内容的情况下,而且FutureBuilder在更新页面内容时比较麻烦,future的方法不能够重新执行,builder也无法同步,轮询很不方便。(我没调出来)。
所以对于物联网类需要频繁,不间断获取数据的,不能使用这种方法。因为他需要不断执行数据获取,根据获取到的数据内容进行分类显示,这时候用FutureBuilder就不适用了。
轮询方法详见下面的文章:
https://blog.csdn.net/weixin_44350337/article/details/113728944
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。