Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振:在无状态小部件中调用异步方法_Flutter_Dart - Fatal编程技术网

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

Flutter 颤振:在无状态小部件中调用异步方法,flutter,dart,Flutter,Dart,我想在无状态小部件中调用一个异步方法。运行时,它会说 Future dynamic不是小部件的子类型 然后在几秒钟后显示结果。我怎样才能阻止它? 这是我的方法 var onvalue = await Firestore.instance .collection("userdata") .document(user.uid) .get(); if (onvalue.exists) { return Navigator.pu

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

Future dynamic不是小部件的子类型

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

    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()
    );
  }
小部件构建(构建上下文){
var user=Provider.of(上下文);
//返回主页或进行身份验证
返回材料PP(
home:user!=null?检查(user)//调用函数
:app()
);
}

您可以使用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()
          );
      }
小部件构建(构建上下文){
var user=Provider.of(上下文);
//返回主页或进行身份验证
返回材料PP(
主页:用户!=null?
未来建设者(
未来:检查(用户),
构建器:(\uux,快照){
if(snapshot.connectionState==connectionState.done){
返回文本(snapshot.data);
}否则{
返回循环ProgressIndicator();
}
},
)
:app()
);
}

您可以将您的代码发布到@D.Go.add code您尝试了什么。@T.TSage请检查。@VirenVVarasadiya请再次检查