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

D. *_*Go. 2 dart flutter

我有一个异步方法,我想在无状态小部件中调用它。运行时它说

Future Dynamic 不是 widget 的子类型

然后几秒钟后显示结果。我怎样才能停止它?这是我的方法

    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()),);
    }
 }
Run Code Online (Sandbox Code Playgroud)

还有我的主体

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()
    );
  }
Run Code Online (Sandbox Code Playgroud)

Vir*_*iya 6

您可以使用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()
          );
      }
Run Code Online (Sandbox Code Playgroud)