Flutter:在无状态小部件中调用异步方法

时间:2020-05-12 11:35:13

标签: flutter dart

我有一个要在无状态窗口小部件中调用的Async方法。运行时会显示

动态未来不是小部件的子类型

然后在几秒钟后显示结果。如何停止? 这是我的方法

    var onvalue = await Firestore.instance
        .collection("userdata")
        .document(user.uid)
        .get();
    if (onvalue.exists) {
      return Navigator.pushReplacement(context,
        MaterialPageRoute(builder: (context) => mainhomepage()),);
    }
    else {
      print("register");
      return  Navigator.pushReplacement(context,
        MaterialPageRoute(builder: (context) => Register()),);
    }
 }

还有我的身体

Widget build(BuildContext context) {
    var user = Provider.of<User>(context);
    //return either home or authenticate
    return MaterialApp (
        home: user != null?check(user)//Calling the function
            :app()
    );
  }

1 个答案:

答案 0 :(得分:1)

您可以使用Futurebuilder。

Widget build(BuildContext context) {
    var user = Provider.of<User>(context);
    //return either home or authenticate
    return MaterialApp (
        home: user != null?
              FutureBuilder(
              future: check(user),
              builder: (_, snapshot) {
                if (snapshot.connectionState == ConnectionState.done) {
                  return Text(snapshot.data);
                } else {
                  return CircularProgressIndicator();
                }
              },
            )
            :app()
          );
      }