Bird
Raised Fist0
Fluttermobile~20 mins

Firebase Authentication in Flutter - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Firebase Auth Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ ui_behavior
intermediate
2:00remaining
What happens when a user tries to sign in with an invalid email format?
Consider this Flutter code snippet using Firebase Authentication to sign in a user. What will be the app's behavior if the user enters an invalid email format?
Flutter
try {
  await FirebaseAuth.instance.signInWithEmailAndPassword(
    email: userEmail,
    password: userPassword
  );
  print('Sign in successful');
} catch (e) {
  print('Error: $e');
}
AThe app crashes with a null pointer exception.
BThe app prints 'Sign in successful' even with invalid email format.
CThe app throws a FirebaseAuthException with code 'invalid-email'.
DThe app ignores the error and continues without signing in.
Attempts:
2 left
💡 Hint
Firebase validates email format and throws specific exceptions for invalid inputs.
❓ lifecycle
intermediate
2:00remaining
When does FirebaseAuth.instance.authStateChanges() emit a new event?
In Flutter, FirebaseAuth provides authStateChanges() stream. When does this stream emit a new event?
AEvery second regardless of user state.
BOnly when the app starts.
COnly when the user changes their password.
DWhen the user signs in or signs out.
Attempts:
2 left
💡 Hint
Think about what changes the authentication state.
📝 Syntax
advanced
2:00remaining
What is the output of this Flutter Firebase sign-up code snippet?
Analyze the following code and select the correct output printed to the console.
Flutter
try {
  final userCredential = await FirebaseAuth.instance.createUserWithEmailAndPassword(
    email: 'test@example.com',
    password: '123'
  );
  print('User ID: ${userCredential.user?.uid}');
} catch (e) {
  print('Error: $e');
}
AError: FirebaseAuthException with code 'weak-password'
BUser ID: a valid UID string
CUser ID: null
DError: FormatException
Attempts:
2 left
💡 Hint
Firebase requires passwords to be at least 6 characters.
❓ navigation
advanced
2:00remaining
What happens to the navigation stack after a successful Firebase sign-out?
In a Flutter app, after calling FirebaseAuth.instance.signOut(), what is the best practice for navigation to reflect the signed-out state?
APop all routes and push the login screen as the new root.
BPush a new home screen on top of the current stack.
CDo nothing and stay on the current screen.
DReplace the current screen with a loading spinner.
Attempts:
2 left
💡 Hint
Think about preventing the user from returning to authenticated screens after sign-out.
🔧 Debug
expert
2:00remaining
Why does this Flutter Firebase sign-in code cause an unhandled exception?
Review the code below. Why does it cause an unhandled exception when the user enters wrong credentials?
Flutter
void signInUser(String email, String password) async {
  final userCredential = await FirebaseAuth.instance.signInWithEmailAndPassword(
    email: email,
    password: password
  );
  print('Signed in: ${userCredential.user?.email}');
}

// Called somewhere without try-catch
ABecause signInWithEmailAndPassword returns null on failure, causing a null pointer.
BBecause exceptions from signInWithEmailAndPassword are not caught, causing unhandled exceptions.
CBecause the print statement uses string interpolation incorrectly.
DBecause the async function is not awaited, causing timing issues.
Attempts:
2 left
💡 Hint
Think about error handling with async calls.

Practice

(1/5)
1. What is the main purpose of Firebase Authentication in a Flutter app?
easy
A. To send push notifications to users
B. To securely manage user sign-up and login
C. To design the app's user interface
D. To store user data in a database

Solution

  1. Step 1: Understand Firebase Authentication role

    Firebase Authentication helps apps manage user accounts securely.
  2. Step 2: Differentiate from other Firebase services

    It does not store user data or handle UI or notifications.
  3. Final Answer:

    To securely manage user sign-up and login -> Option B
  4. Quick Check:

    Authentication = Secure login [OK]
Hint: Authentication means managing user login securely [OK]
Common Mistakes:
  • Confusing authentication with database storage
  • Thinking it handles UI design
  • Assuming it sends notifications
2. Which Flutter Firebase method is used to sign up a new user with email and password?
easy
A. createUserWithEmailAndPassword
B. signOut
C. signInWithEmailAndPassword
D. sendPasswordResetEmail

Solution

  1. Step 1: Identify sign-up method

    The method to create a new user is createUserWithEmailAndPassword.
  2. Step 2: Differentiate from sign-in and other methods

    signInWithEmailAndPassword is for login, not sign-up.
  3. Final Answer:

    createUserWithEmailAndPassword -> Option A
  4. Quick Check:

    Sign-up method = createUserWithEmailAndPassword [OK]
Hint: Sign-up uses createUserWithEmailAndPassword [OK]
Common Mistakes:
  • Using signInWithEmailAndPassword for sign-up
  • Confusing signOut with sign-up
  • Mixing reset email with sign-up
3. What will the following Flutter code print if the user enters correct email and password?
try {
  await FirebaseAuth.instance.signInWithEmailAndPassword(email: 'user@example.com', password: 'pass123');
  print('Login successful');
} catch (e) {
  print('Login failed');
}
medium
A. No output
B. Login failed
C. Syntax error
D. Login successful

Solution

  1. Step 1: Analyze try block with correct credentials

    Since email and password are correct, signInWithEmailAndPassword succeeds.
  2. Step 2: Check catch block execution

    No error occurs, so catch block is skipped and 'Login successful' prints.
  3. Final Answer:

    Login successful -> Option D
  4. Quick Check:

    Correct login prints success [OK]
Hint: Correct login prints success message [OK]
Common Mistakes:
  • Assuming catch block runs on success
  • Thinking syntax error occurs
  • Ignoring async/await behavior
4. Identify the error in this Flutter Firebase Authentication code snippet:
final user = await FirebaseAuth.instance.createUserWithEmailAndPassword(email: email, password: password);
print(user.email);
medium
A. createUserWithEmailAndPassword returns UserCredential, not User
B. Email and password parameters are missing
C. print statement syntax is incorrect
D. Await keyword cannot be used here

Solution

  1. Step 1: Check return type of createUserWithEmailAndPassword

    This method returns a UserCredential object, not a User directly.
  2. Step 2: Access user email correctly

    The email is inside user.user.email, so printing user.email causes error.
  3. Final Answer:

    createUserWithEmailAndPassword returns UserCredential, not User -> Option A
  4. Quick Check:

    Return type is UserCredential [OK]
Hint: Remember createUserWithEmailAndPassword returns UserCredential [OK]
Common Mistakes:
  • Treating UserCredential as User
  • Forgetting to access .user property
  • Misusing await keyword
5. You want to show a friendly error message when login fails due to wrong password. Which Flutter Firebase Authentication code snippet correctly handles this?
try {
  await FirebaseAuth.instance.signInWithEmailAndPassword(email: email, password: password);
} catch (e) {
  if (e.code == 'wrong-password') {
    print('Incorrect password. Please try again.');
  } else {
    print('Login error: ' + e.message);
  }
}
hard
A. Correctly checks error code and shows message
B. e.code is not available on exception object
C. Should use on FirebaseAuthException catch instead of generic catch
D. print statements should be replaced with throw

Solution

  1. Step 1: Understand error handling in Firebase Auth

    FirebaseAuthException provides the code property; generic catch (e) may not.
  2. Step 2: Use specific catch for FirebaseAuthException

    Using on FirebaseAuthException catch (e) allows access to e.code safely.
  3. Step 3: Evaluate given code

    Given code uses generic catch, so e.code may cause runtime error.
  4. Final Answer:

    Should use on FirebaseAuthException catch instead of generic catch -> Option C
  5. Quick Check:

    Use FirebaseAuthException catch for error codes [OK]
Hint: Catch FirebaseAuthException to access error codes safely [OK]
Common Mistakes:
  • Using generic catch without exception type
  • Assuming all exceptions have code property
  • Replacing print with throw unnecessarily
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard