Challenge - 5 Problems
Provider Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ ui_behavior
intermediate2:00remaining
Understanding Provider Consumer Widget Behavior
Given the following Flutter code using Provider, what will be the output on the screen when the button is pressed once?
Flutter
class Counter extends ChangeNotifier { int value = 0; void increment() { value++; notifyListeners(); } } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return ChangeNotifierProvider( create: (_) => Counter(), child: MaterialApp( home: Scaffold( body: Center( child: Consumer<Counter>( builder: (context, counter, _) => Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text('Count: ${counter.value}'), ElevatedButton( onPressed: counter.increment, child: Text('Increment'), ), ], ), ), ), ), ), ); } }
Attempts:
2 left
💡 Hint
Remember that notifyListeners() triggers UI update in Consumer widgets.
✗ Incorrect
The Counter class increments the value and calls notifyListeners(), which causes the Consumer widget to rebuild and show the updated count.
❓ lifecycle
intermediate2:00remaining
Provider Lifecycle and Disposal
What happens to the ChangeNotifier instance provided by ChangeNotifierProvider when the widget tree containing it is removed?
Attempts:
2 left
💡 Hint
Think about how ChangeNotifierProvider manages the lifecycle of the object it creates.
✗ Incorrect
ChangeNotifierProvider disposes the ChangeNotifier instance automatically when the provider is removed from the widget tree.
📝 Syntax
advanced2:00remaining
Correct Usage of Provider.of with listen Parameter
What is the output of this code snippet inside a widget's build method?
final counter = Provider.of(context, listen: false);
Text('Count: ${counter.value}')
Flutter
class Counter { int value = 5; } // Inside build method: final counter = Provider.of<Counter>(context, listen: false); return Text('Count: ${counter.value}');
Attempts:
2 left
💡 Hint
listen: false means the widget won't rebuild on changes.
✗ Incorrect
Using listen: false gets the current value but does not subscribe to updates, so the widget won't rebuild automatically.
🔧 Debug
advanced2:00remaining
Debugging Provider Not Updating UI
Why does the UI NOT update when the following ChangeNotifier's value changes?
class Counter with ChangeNotifier {
int value = 0;
void increment() {
value++;
// Missing notifyListeners()
}
}
Flutter
class Counter extends ChangeNotifier { int value = 0; void increment() { value++; // notifyListeners() is missing here } }
Attempts:
2 left
💡 Hint
Check if the notifier tells listeners about changes.
✗ Incorrect
Without notifyListeners(), Provider does not know the state changed and does not rebuild dependent widgets.
🧠 Conceptual
expert2:00remaining
Provider Scope and Access
If you have two nested ChangeNotifierProviders providing different Counter instances, which instance will Provider.of(context) return inside the inner widget?
Attempts:
2 left
💡 Hint
Provider.of finds the nearest matching provider up the widget tree.
✗ Incorrect
Provider returns the nearest provider of the requested type, so the inner provider's instance is returned.