Android 未执行future function builder之后的代码
我试图通过firebase otp验证来验证用户。但是我的未来构建器代码没有执行。 我是新生。 函数register user()中有一个future builder,它从函数getMobile()中获取数据。 但函数寄存器用户中存在的未来生成器未执行。 函数registeruser()能够获取数据并返回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
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的本地函数中,该函数从未调用过。