[英]Closing dialog automatically, after firestore response in flutter
我創建了一個對話框,其中我正在為 CircularProgressIndicator 設置動畫,它在執行 firebase 身份驗證時加載。 一切都很好,除非由於某種原因登錄失敗,例如(沒有互聯網,錯誤的電子郵件/密碼),應用程序顯示錯誤對話框然后這個對話框一直顯示,除非我在框外點擊。 如果出現另一個對話框或錯誤框,我希望它自動關閉。
Future signIn()async{
try {
showDialog(context: context, builder: (context) =>
AlertDialog(
title: Center(
child: CircularProgressIndicator(
color: Colors.deepOrange,
),
),
)
);
await FirebaseAuth.instance.signInWithEmailAndPassword(
email: emailController.text,
password: passwordController.text,
);
fetchData();
// print(role_firestore);
if ( role_firestore == 'Admin'){
return Navigator.push(
context,
MaterialPageRoute(builder: (context) => AdminHomePage()));
}else if (role_firestore == 'User'){
return Navigator.push(
context,
MaterialPageRoute(builder: (context) => MainPage()));
}else if (role_firestore == 'Restaurant'){
return Navigator.push(context, MaterialPageRoute(builder: (context) =>
Restaurants()));
}else {
Navigator.pop(context);
}
} on FirebaseAuthException catch (e) {
final result = await Connectivity().checkConnectivity();
showConnectivitySnackBar(result);
handleLoginError (e);
}
}
這是顯示firestore錯誤的對話框
showDialog(context: context, builder: (context)=> AlertDialog(
title: const Text("Log In Failed",style: TextStyle(color: Colors.deepOrange)),
content: Text(messageToDisplay,style: TextStyle(color: Colors.deepOrange)),
actions: [TextButton( onPressed: () {Navigator.of(context, rootNavigator:
true).pop();},
child: const Text("Ok",style: TextStyle(color: Colors.deepOrange)),)],
));
您可以通過調用關閉/彈出對話框:
Navigator.of(context).pop();
只需將其放在嘗試成功時加載數據的方法的末尾,如果捕獲到錯誤,則將其放在 catch 的開頭
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.