Bird
Raised Fist0
Fluttermobile~20 mins

Null safety in Flutter - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Null Safety Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
📝 Syntax
intermediate
2:00remaining
Identify the null safety error
Which option will cause a compile-time error due to null safety in Flutter?
Flutter
String name = null;
print(name.length);
AString? name = null; print(name?.length);
BString name = null; print(name.length);
CString name = 'Flutter'; print(name.length);
DString? name = 'Dart'; print(name!.length);
Attempts:
2 left
💡 Hint
Check if the variable type allows null values.
❓ ui_behavior
intermediate
2:00remaining
Null safety impact on UI rendering
What will be displayed when this Flutter widget runs?
Flutter
String? message;

Widget build(BuildContext context) {
  return Text(message ?? 'No message');
}
ADisplays 'No message'
BDisplays nothing (empty space)
CThrows a runtime error
DDisplays 'null'
Attempts:
2 left
💡 Hint
Look at the null-coalescing operator usage.
❓ lifecycle
advanced
2:00remaining
Null safety and late initialization
What happens if you access a 'late' variable before it is initialized?
Flutter
late String title;

void printTitle() {
  print(title);
}
AThrows LateInitializationError
BPrints null
CPrints empty string
DPrints 'title'
Attempts:
2 left
💡 Hint
Consider what 'late' means in Dart null safety.
❓ navigation
advanced
2:00remaining
Null safety in route arguments
Given this code, what will happen if 'args' is null?
Flutter
final args = ModalRoute.of(context)?.settings.arguments as String;

print(args.length);
APrints 0
BThrows a NoSuchMethodError
CThrows a TypeError
DPrints null
Attempts:
2 left
💡 Hint
Check the cast and null safety behavior.
🔧 Debug
expert
2:00remaining
Debugging null safety error in widget state
Why does this Flutter stateful widget throw a null safety error?
Flutter
class MyWidget extends StatefulWidget {
  @override
  State<MyWidget> createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  late String title;

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Text(title);
  }
}
ABecause 'title' should be nullable String
BBecause 'initState' is missing super.initState() call
CBecause Text widget cannot display variables
DBecause 'title' is late but never initialized before use
Attempts:
2 left
💡 Hint
Check when 'title' is assigned a value.

Practice

(1/5)
1. What does the ? symbol mean when used after a type in Flutter null safety?
easy
A. It marks the variable as a constant.
B. It means the variable is always non-null.
C. It means the variable can hold a null value.
D. It makes the variable read-only.

Solution

  1. Step 1: Understand the ? usage in Flutter

    The ? after a type means the variable can be null, allowing it to hold either a value or null.
  2. Step 2: Compare with non-nullable types

    Without ?, variables must always have a non-null value, so ? explicitly allows null.
  3. Final Answer:

    It means the variable can hold a null value. -> Option C
  4. Quick Check:

    ? means nullable = A [OK]
Hint: Remember: ? means nullable, can hold null [OK]
Common Mistakes:
  • Thinking ? makes variable constant
  • Confusing ? with non-nullable
  • Assuming ? means read-only
2. Which of the following is the correct way to declare a nullable integer variable in Flutter?
easy
A. int? number;
B. int number?;
C. nullable int number;
D. int number = null;

Solution

  1. Step 1: Recall correct nullable syntax

    In Flutter, to declare a nullable type, place ? immediately after the type name, like int?.
  2. Step 2: Check each option

    int? number; uses int? number; which is correct. int number?; places ? after variable name, which is invalid. nullable int number; uses a non-existent keyword. int number = null; assigns null to a non-nullable type, causing error.
  3. Final Answer:

    int? number; -> Option A
  4. Quick Check:

    Nullable type syntax = int? [OK]
Hint: Put ? right after type to make nullable [OK]
Common Mistakes:
  • Placing ? after variable name
  • Using non-existent keywords like 'nullable'
  • Assigning null to non-nullable without ?
3. What will be the output of this Flutter code snippet?
int? a;
int b = a ?? 5;
print(b);
medium
A. null
B. 5
C. 0
D. Compilation error

Solution

  1. Step 1: Understand variable initialization

    Variable a is nullable and not initialized, so it is null.
  2. Step 2: Evaluate the null-coalescing operator ??

    The expression a ?? 5 means if a is null, use 5 instead.
  3. Step 3: Assign and print value

    Since a is null, b gets 5, so print(b) outputs 5.
  4. Final Answer:

    5 -> Option B
  5. Quick Check:

    ?? gives default if null = 5 [OK]
Hint: Use ?? to provide default when null [OK]
Common Mistakes:
  • Assuming uninitialized nullable is zero
  • Thinking ?? returns null
  • Expecting compilation error for nullable without init
4. Identify the error in this Flutter code snippet:
String? name;
print(name.length);
medium
A. Error: Cannot access property on nullable without check
B. No error, prints null
C. Error: Missing semicolon
D. Error: Variable 'name' not declared

Solution

  1. Step 1: Analyze nullable variable usage

    Variable name is nullable and not initialized, so it is null.
  2. Step 2: Accessing property on nullable

    Accessing name.length without null check causes error because name might be null.
  3. Step 3: Correct usage

    Use null-aware operator like name?.length or check for null before accessing.
  4. Final Answer:

    Error: Cannot access property on nullable without check -> Option A
  5. Quick Check:

    Access nullable property without check = error [OK]
Hint: Use ?. or check null before property access [OK]
Common Mistakes:
  • Assuming nullable property access is safe
  • Ignoring null checks
  • Confusing syntax errors with runtime errors
5. Given a nullable list of integers List<int>? numbers;, which code safely sums all elements or returns 0 if the list is null?
hard
A. int sum = numbers!.reduce((a, b) => a + b);
B. int sum = numbers.reduce((a, b) => a + b);
C. int sum = numbers == null ? null : numbers.reduce((a, b) => a + b);
D. int sum = numbers?.reduce((a, b) => a + b) ?? 0;

Solution

  1. Step 1: Understand nullable list and safe access

    Since numbers can be null, accessing methods directly risks error.
  2. Step 2: Analyze each option

    int sum = numbers?.reduce((a, b) => a + b) ?? 0; uses ?. to safely call reduce only if numbers is not null, then ?? 0 to default to 0 if null. int sum = numbers.reduce((a, b) => a + b); calls reduce directly, causing error if null. int sum = numbers!.reduce((a, b) => a + b); forces non-null with !, risky if null. int sum = numbers == null ? null : numbers.reduce((a, b) => a + b); returns null instead of int 0, causing type mismatch.
  3. Step 3: Choose safe and correct option

    int sum = numbers?.reduce((a, b) => a + b) ?? 0; safely sums or returns 0 if null.
  4. Final Answer:

    int sum = numbers?.reduce((a, b) => a + b) ?? 0; -> Option D
  5. Quick Check:

    Safe call + default value = int sum = numbers?.reduce((a, b) => a + b) ?? 0; [OK]
Hint: Use ?. with ?? for safe nullable operations [OK]
Common Mistakes:
  • Calling methods on nullable without safe operator
  • Using ! without null check
  • Returning null instead of default value
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