温馨提示:本文翻译自stackoverflow.com,查看原文请点击:flutter - How to get the result of a future within the builder method of a FutureBuilder widget?
dart flutter

flutter - 如何在FutureBuilder小部件的builder方法中获取Future的结果?

发布于 2020-04-04 00:21:01

我四处张望,似乎找不到解决此问题的方法。我有一个Future<bool> = isAuth

我有一个定义如下的未来构建器:

FutureBuilder(
  future: isAuth,
  builder(context, snapshot){
    if(connectionState == connectionState.done){
      // Some Code Here
    }

    if(connectionState == ConnectionState.waiting){
      CircularProgressIndicator()
    }
  }

我的问题是,我该如何返回一个部件,如果isAuth回报率true,而另一如果isAuth回报false我在等待的结果时正在显示加载 Spinner isAuth,一旦获得结果,我想显示两种形式之一吗?

查看更多

提问者
MarcElrick
被浏览
33
Augustin R 2020-01-31 21:00

您可以使用访问FutureBuilderfuturesnapshot.data

不要忘记检查是否snapshot.data使用定义了snapshot.hasData

FutureBuilder<bool>(
  future: isAuth,
  builder: (context, snapshot) {
    if(connectionState == connectionState.done){
      if (snapshot.hasData){
        if (snapshot.data) return TrueWidget();
        else return FalseWidget();
        // Or with a one-liner :
        // return snapshot.data ? TrueWidget() : FalseWidget();
      }
    }

    if(connectionState == ConnectionState.waiting){
      return CircularProgressIndicator(); // Don't forget to return a widget in a builder method
    }
  }
)