首页 > 解决方案 > 如何在 Flutter 中将 RefreshIndicator 与 FutureBuilder 一起使用?

问题描述

我试图找出一种方法来在FutureBuilder加载完成时向周围的类指示。RefreshIndicator将 aFuture作为参数并在Future完成时停止显示刷新指示器。我无法访问传递给 的完全相同的Future变量FutureBuilder,尤其是当它们位于两个单独的类中时,除非我可以传递对一个的引用并且当它在另一个类中完成时,我会知道...

标签: dartflutter

解决方案


我也在寻找这个答案。最后我想通了...

这是我的做法

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());
    }
  }




      

推荐阅读