0

フラッターで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>();が、問題を解決できませんでした。

4

1 に答える 1