signIn method Null safety

Future<bool> signIn(
  1. String username,
  2. String password
)

로그인을 시도합니다.

Implementation

Future<bool> signIn(String username, String password) async {
  try {
    LogManager().addLog("로그인 요청", screen: runtimeType.toString());
    SignInResult signInResult = await Amplify.Auth.signIn(username: username, password: password);
    if (signInResult.isSignedIn) {
      /// 로그인 성공
      LogManager().addLog("로그인 성공", screen: runtimeType.toString());
      Navigator.of(context, rootNavigator: true).popUntil((route) => !route.settings.name!.startsWith(PopupScreen.routeName));
      Navigator.of(context, rootNavigator: true).pushReplacementNamed(FarmLoadingScreen.routeName);
      registerNotificationToken();
      return true;
    }

    String content = "No Message";
    switch (signInResult.nextStep?.signInStep) {
      case "CONFIRM_SIGN_IN_WITH_NEW_PASSWORD":
        // 새 비밀번호 필요할 때
        // 현재 시나리오상 걸리는 일이 있는지 모르겠음. Amplify Studio에서 계정을 생성한 뒤 로그인하면 이 메세지가 뜸.
        content = "login step CONFIRM_SIGN_IN_WITH_NEW_PASSWORD";
        break;
      default:
        content = "알수없는 에러가 발생했습니다.";
        break;
    }
    throw content;
  } catch (e) {
    LogManager().addLog("로그인 실패", screen: runtimeType.toString());
    LogManager().addLog(e.toString(), screen: runtimeType.toString());
    rethrow;
  }
}