フラッターでcognitoを使用してログインフォームを作成しました.ログインの試行が成功または失敗した後に、AlertDialog
. ユーザーが試行に失敗すると、ダイアログが表示され、現在の画面に戻ります。警告ダイアログのボタン ( OK
) を押すと、スローされ、エラーが発生Looking up a deactivated widget's ancestor is unsafe.
します。はためくので、それを解決する方法がわからない。これはログイン方法です:
void loginToCognito() async {
final storage = FlutterSecureStorage();
await storage.write(key: "e", value: email);
await storage.write(key: "p", value: password);
String message;
try {
_user = await _userService.login(email, password);
message = 'User successfully logged in!';
if (!_user.confirmed) {
message = 'Please confirm user account';
}
return showAlertDialog(
context,
message,
Navigator.pushNamed(context, SecondScreen.id),
);
} on CognitoClientException catch (e) {
if (e.code == 'InvalidParameterException' ||
e.code == 'NotAuthorizedException' ||
e.code == 'UserNotFoundException' ||
e.code == 'ResourceNotFoundException') {
message = e.message;
/// This is where the error happpens
return showAlertDialog(
context,
message,
Navigator.pop(context),
);
} else {
message = 'An unknown client error occurred';
return showAlertDialog(
context,
message,
Navigator.pop(context),
);
}
} catch (e) {
message = 'An unknown error occurred';
return showAlertDialog(
context,
message,
Navigator.pop(context),
);
}
}
そして、ここにアラートダイアログがあります:
showAlertDialog(
BuildContext context,
String message,
void function,
) {
// Create button
Widget okButton = FlatButton(
child: Text("OK"),
onPressed: () {
Navigator.of(context).pop();
},
);
// Create AlertDialog
AlertDialog alert = AlertDialog(
title: Text('User Login'),
content: Text(message),
actions: [
okButton,
],
);
// show the dialog
showDialog(
context: context,
builder: (BuildContext context) {
return alert;
},
);
}
このエラーは最初にNavigator.pop(context);
発生したためですか? もしそうなら、この問題を解決する最善の方法は何ですか? 前もって感謝します。で試してみましたfinal globalScaffoldKey = GlobalKey<ScaffoldState>();
が、問題を解決できませんでした。