Always provide a value that matches one of the items values.
If onChanged is null, the dropdown is disabled.
Use setState to update the selected value inside a StatefulWidget.
Summary
DropdownButton lets users pick one choice from a list.
You must provide items, value, and onChanged.
Use inside a StatefulWidget to update the selected value dynamically.
Practice
(1/5)
1. What is the main purpose of the DropdownButton widget in Flutter?
easy
A. To display a list of checkboxes
B. To create a button that navigates to a new screen
C. To let users select one option from a list of choices
D. To input text from the user
Solution
Step 1: Understand DropdownButton functionality
The DropdownButton widget is designed to show a list of options where the user can pick only one.
Step 2: Compare with other widgets
Other widgets like checkboxes allow multiple selections, and buttons or text fields serve different purposes.
Final Answer:
To let users select one option from a list of choices -> Option C
Quick Check:
DropdownButton = single choice selector [OK]
Hint: DropdownButton is for single choice selection only [OK]
Common Mistakes:
Confusing DropdownButton with CheckboxListTile
Thinking it inputs text
Assuming it navigates screens
2. Which of the following is the correct way to declare a DropdownButton with items and a selected value?
easy
A. DropdownButton<String>(value: selectedValue, items: itemsList, onChanged: onChangedFunction)
B. DropdownButton(value: selectedValue, items: itemsList)
C. DropdownButton(items: itemsList, onChanged: onChangedFunction)
D. DropdownButton<String>(value: selectedValue, onChanged: onChangedFunction)
Solution
Step 1: Check required parameters
DropdownButton requires value, items, and onChanged to work properly.
Step 2: Verify syntax correctness
DropdownButton<String>(value: selectedValue, items: itemsList, onChanged: onChangedFunction) includes all required parameters with correct types and syntax.
Final Answer:
DropdownButton<String>(value: selectedValue, items: itemsList, onChanged: onChangedFunction) -> Option A
Assuming selected is a state variable in a StatefulWidget.
medium
A. Using 'val!' causes a syntax error
B. Not calling setState means UI won't update on selection
C. Missing 'value' parameter causes the dropdown to not show the selected item
D. Items list is empty, so dropdown won't show options
Solution
Step 1: Verify required parameters
The code includes value: selected, items, and onChanged.
Step 2: Analyze onChanged function
The onChanged updates selected but does not call setState, so UI won't rebuild to reflect changes.
Final Answer:
Not calling setState means UI won't update on selection -> Option B
Quick Check:
State update requires setState() [OK]
Hint: Always call setState to update UI after state change [OK]
Common Mistakes:
Forgetting setState after changing state
Omitting value parameter causes UI confusion
Misunderstanding null safety with val!
5. You want to create a DropdownButton that shows a list of colors by name, but stores their hex codes as values. How should you define the items list to achieve this?
hard
A. [DropdownMenuItem(value: 'Red', child: Text('Red')), DropdownMenuItem(value: 'Green', child: Text('Green'))]
B. [DropdownMenuItem(value: 'Red', child: Text('#FF0000')), DropdownMenuItem(value: 'Green', child: Text('#00FF00'))]
C. [DropdownMenuItem(value: Colors.red, child: Text('Red')), DropdownMenuItem(value: Colors.green, child: Text('Green'))]
D. [DropdownMenuItem(value: '#FF0000', child: Text('Red')), DropdownMenuItem(value: '#00FF00', child: Text('Green'))]
Solution
Step 1: Understand value vs display
The value should be the hex code (the stored data), and child is the visible text (color name).
Step 2: Match options to requirement
[DropdownMenuItem(value: '#FF0000', child: Text('Red')), DropdownMenuItem(value: '#00FF00', child: Text('Green'))] correctly sets hex codes as values and color names as text.