当前位置:   article > 正文

Flutter FutureBuilder的使用和适用范围

futurebuilder

首先先来介绍一下FutureBuilder的使用:

FutureBuilder类主要需要两个参数:

  • future:需要一个异步方法,没有参数传入,如果方法内需要参数可以设置为类参数,或全局参数。将该类方法放在Widget build之上就行。
  • builder:它是我们构建组件的策略。接收两个参数:BuildContext context, AsyncSnapshot snapshot。context上下文,snapshot就是_calculation在时间轴上执行过程的状态快照。他可以用于表示futurer的执行情况。通过判断其属性,从而执行相应的操作。
//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}');
    }
  },
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

       FutureBuilder通过子属性future获取用户需要异步处理的代码,用builder回调函数暴露出异步执行过程中的快照。我们通过builder的参数snapshot暴露的快照属性,定义好对应状态下的处理代码,即可实现异步执行时的交互逻辑。

这里不再做更详细的介绍,主要说一下适用范围:

使用FutureBuilder时可以在数据获取过程中,和数据获取情况进行表示。
       但是使用FutureBuilder时最适用的是数据一次就获取,不需要再次或频繁获取数据,改变页面内容的情况下,而且FutureBuilder在更新页面内容时比较麻烦,future的方法不能够重新执行,builder也无法同步,轮询很不方便。(我没调出来)。
       所以对于物联网类需要频繁,不间断获取数据的,不能使用这种方法。因为他需要不断执行数据获取,根据获取到的数据内容进行分类显示,这时候用FutureBuilder就不适用了。

轮询方法详见下面的文章:
https://blog.csdn.net/weixin_44350337/article/details/113728944

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/493964
推荐阅读
相关标签
  

闽ICP备14008679号