【发布时间】:2020-11-26 22:34:31
【问题描述】:
我的要求是,每当用户使用电话号码进行验证时,它都会在 Firebase 中检查设置为用户电话号码的文档 ID(如果之前登录过)是否存在,如果存在则转到主页然后不会导航到 AccountVerification 页面。
另外,如果用户已经登录但没有验证关闭应用再打开应用,那么有两种情况,一种是用户验证了帐户详细信息,或者在验证过程中没有验证。在这种情况下,我将检查设置为用户电话号码的文档 ID 是否存在(如果存在),然后转到 HomePage 否则 AccountVerification 页面。 这是我的代码,它不能完美运行。任何人都可以建议我什么应该是正确的方法
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
var globalNumber;
var Number;
Firestore firestore = Firestore.instance;
@override
void initState() {
// TODO: implement initState
super.initState();
getCurrentUser();
}
@override
Widget build(BuildContext context) {
print(globalNumber);
return MaterialApp(
debugShowCheckedModeBanner: false,
home: StreamBuilder<Object>(
stream: FirebaseAuth.instance.onAuthStateChanged,
builder: (BuildContext context, snapshot) {
if (snapshot.hasData) {
return FutureBuilder(
future: Future.wait([
firestore.collection('users').document(globalNumber).get()
]),
builder: (BuildContext context,
AsyncSnapshot<List> snapshot) {
DocumentSnapshot doc = snapshot.data[0];
if(snapshot.hasData) {
if (doc.exists) {
return HomePage();
}
return AccountDetialsPage();
}
else{
return Container(child: Text('Loading'));
}
}
);
} else {
return Phoneverification();
}
}),
) ;
}
getCurrentUser() async{
final FirebaseAuth _auth = FirebaseAuth.instance;
final FirebaseUser user = await _auth.currentUser();
final uid = user.uid;
globalNumber = user.phoneNumber;
// Similarly we can get email as well
//final uemail = user.email;
print(uid);
}
}
【问题讨论】:
-
我的评论解决了你的问题吗?我正在寻找一些反馈,因为我刚开始在 StackOverflow 上帮助其他人!
-
您好,我已经将答案标记为正确......是的,它有帮助......非常感谢
标签: flutter dart google-cloud-firestore firebase-authentication