Use the ?? operator to provide a default value when a nullable variable is null.
Null safety helps catch bugs early, making your app more stable.
Summary
Null safety means variables either always have a value or are marked to allow null.
Use ? to make a variable nullable.
Use ?? to give a default value if a nullable variable is null.
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
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.
Step 2: Compare with non-nullable types
Without ?, variables must always have a non-null value, so ? explicitly allows null.
Final Answer:
It means the variable can hold a null value. -> Option C
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
Step 1: Recall correct nullable syntax
In Flutter, to declare a nullable type, place ? immediately after the type name, like int?.
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.
Final Answer:
int? number; -> Option A
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
Step 1: Understand variable initialization
Variable a is nullable and not initialized, so it is null.
Step 2: Evaluate the null-coalescing operator ??
The expression a ?? 5 means if a is null, use 5 instead.
Step 3: Assign and print value
Since a is null, b gets 5, so print(b) outputs 5.
Final Answer:
5 -> Option B
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
Step 1: Analyze nullable variable usage
Variable name is nullable and not initialized, so it is null.
Step 2: Accessing property on nullable
Accessing name.length without null check causes error because name might be null.
Step 3: Correct usage
Use null-aware operator like name?.length or check for null before accessing.
Final Answer:
Error: Cannot access property on nullable without check -> Option A
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
Step 1: Understand nullable list and safe access
Since numbers can be null, accessing methods directly risks error.
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.
Step 3: Choose safe and correct option
int sum = numbers?.reduce((a, b) => a + b) ?? 0; safely sums or returns 0 if null.
Final Answer:
int sum = numbers?.reduce((a, b) => a + b) ?? 0; -> Option D
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 unknownstrongwhile earning +1 Grip toward your certificate.