evaluateRedirect method

  1. @override
Future<String?> evaluateRedirect(
  1. BuildContext context,
  2. GoRouterState state
)
override

Implementation

@override
Future<String?> evaluateRedirect(
  BuildContext context,
  GoRouterState state,
) async {
  final identityService = context.read<identity.IdentityService>();

  String? redirectTo;
  if (!identityService.state.isPasswordResetInProgress) {
    // navigate back to the sign-in
    // with error message as password
    // reset flow is not in progress
    identityService.addStateMessage(
      app.Message.error(
        context.l10n.passwordResetNotInProgressMessage,
      ),
    );

    await identityService.clearAwaitingVerification();
    redirectTo = SignInWidget.name;
  } else {
    final username = state.uri.queryParameters['username'];
    if (username == null || username.isEmpty) {
      // navigate back to the sign-in
      // page with error message as
      // no username was provided
      identityService.addStateMessage(
        app.Message.error(
          context.l10n.noUsernameProvidedForResetPasswordMessage,
        ),
      );

      await identityService.clearAwaitingVerification();
      redirectTo = SignInWidget.name;
    }
  }
  return redirectTo;
}