Android 未执行future function builder之后的代码

Android 未执行future function builder之后的代码,android,function,flutter,dart,future,Android,Function,Flutter,Dart,Future,我试图通过firebase otp验证来验证用户。但是我的未来构建器代码没有执行。 我是新生。 函数register user()中有一个future builder,它从函数getMobile()中获取数据。 但函数寄存器用户中存在的未来生成器未执行。 函数registeruser()能够获取数据并返回 Widget func_otpsent(BuildContext context){ print("su"); registerUser( contex

我试图通过firebase otp验证来验证用户。但是我的未来构建器代码没有执行。 我是新生。 函数register user()中有一个future builder,它从函数getMobile()中获取数据。 但函数寄存器用户中存在的未来生成器未执行。 函数registeruser()能够获取数据并返回

  Widget func_otpsent(BuildContext context){
    print("su");
    registerUser( context);
    showDialog(
        context: context,
        builder: (BuildContext context){
          return AlertDialog(
            title: Text("Hello"),
            content: Text("We have sent otp code to your mobile number."),
            actions: [
              FlatButton(
                child: Text("Close"),
                onPressed: (){
                  Navigator.of(context).pop();
                },
              )
            ],
          );
        }

    );

  }

  Future registerUser( BuildContext context) async{
    FirebaseAuth _auth= FirebaseAuth.instance;
    try {
      print("hell yea");
      _auth = FirebaseAuth.instance;
    }
    catch(e){
      print(e.toString());
    }
    try{

      Widget build(BuildContext context) =>  FutureBuilder<String>(
        future: getMobile(),
      builder:(BuildContext context,snapshot) {
          print("str");
      if(snapshot.hasData){
        var temp=snapshot.data.toString();
        print(temp);
        print("jk");

        print("hello");
        _auth.verifyPhoneNumber(phoneNumber: snapshot.data, verificationCompleted: null, verificationFailed: null,
            codeSent:(String verificationId, [int forceResendingToken]){
              print("codesent");
              saveOtp(verificationId);
            } ,
            codeAutoRetrievalTimeout: null);

      }
      else if(snapshot.hasError){
        print(snapshot.error);
      }
      return(Text("hello"));
      },

    );}
    catch(e){
      print(e.toString());
    }

  }
  Future<String> getMobile() async{
    SharedPreferences getmob=await SharedPreferences.getInstance();
    var mobile=await getmob.get("mobile");
    print(mobile);
    return (mobile);
}


} ```

Only important code is show here.

Widget函数(BuildContext){
印刷品(“su”);
注册者(上下文);
显示对话框(
上下文:上下文,
生成器:(BuildContext上下文){
返回警报对话框(
标题:文本(“你好”),
内容:文本(“我们已将otp代码发送到您的手机号码。”),
行动:[
扁平按钮(
子项:文本(“关闭”),
已按下:(){
Navigator.of(context.pop();
},
)
],
);
}
);
}
未来注册服务器(构建上下文上下文)异步{
FirebaseAuth _auth=FirebaseAuth.instance;
试一试{
印刷品(“该死的是”);
_auth=FirebaseAuth.instance;
}
捕获(e){
打印(如toString());
}
试一试{
小部件构建(构建上下文)=>FutureBuilder(
future:getMobile(),
生成器:(BuildContext上下文,快照){
印刷品(“str”);
if(snapshot.hasData){
var temp=snapshot.data.toString();
打印(临时);
打印(“jk”);
打印(“你好”);
_验证电话号码(电话号码:snapshot.data,verificationCompleted:null,verificationFailed:null,
codeSent:(字符串验证ID,[int-forceResendingToken]){
打印(“代码发送”);
saveOtp(验证id);
} ,
codeAutoRetrievalTimeout:空);
}
else if(snapshot.hasrerror){
打印(快照错误);
}
返回(文本(“您好”);
},
);}
捕获(e){
打印(如toString());
}
}
Future getMobile()异步{
SharedReferences getmob=等待SharedReferences.getInstance();
var mobile=等待getmob.get(“mobile”);
印刷(流动);
返回(移动);
}
} ```
这里只显示了重要的代码。

phoneCodeSent功能是否有效?如果它不工作,那么检查verficationFailed回调函数的错误是什么。不需要在phoneCodeSent中尝试/捕获,因为firebase会自动捕获错误。您的FutureBuilder需要位于构建函数中。您将其放入一个名为build的本地函数中,该函数从未调用过。