flutter-change-notifier

Featured

Use when setting up ChangeNotifier models, providing them to the widget tree, consuming state with Consumer or Provider.of, or optimizing rebuilds.

AI & Automation 619 stars 60 forks Updated today MIT

Install

View on GitHub

Quality Score: 95/100

Stars 20%
93
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# Flutter ChangeNotifier Skill This skill defines how to correctly use `ChangeNotifier` with the `provider` package for state management in Flutter. --- ## 1. Model Extend `ChangeNotifier` to manage state. Keep internal state **private** and expose **unmodifiable views**. Call `notifyListeners()` on every state change. ```dart class CartModel extends ChangeNotifier { final List<Item> _items = []; UnmodifiableListView<Item> get items => UnmodifiableListView(_items); void add(Item item) { _items.add(item); notifyListeners(); } void removeAll() { _items.clear(); notifyListeners(); } } ``` - Place shared state **above** the widgets that use it in the widget tree. - Never directly mutate widgets or call methods on them to change state — rebuild widgets with new data instead. --- ## 2. Providing the Model ```dart ChangeNotifierProvider( create: (context) => CartModel(), child: MyApp(), ) ``` - `ChangeNotifierProvider` **automatically disposes** of the model when it is no longer needed. - Use `MultiProvider` when you need to provide multiple models: ```dart MultiProvider( providers: [ ChangeNotifierProvider(create: (_) => CartModel()), ChangeNotifierProvider(create: (_) => UserModel()), ], child: MyApp(), ) ``` --- ## 3. Consuming State ### Consumer ```dart Consumer<CartModel>( builder: (context, cart, child) => Stack( children: [ if (child != null) child, Text('Total price: ${cart.totalPrice}'), ]...

Details

Author
evanca
Repository
evanca/flutter-ai-rules
Created
1 years ago
Last Updated
today
Language
Shell
License
MIT

Similar Skills

Semantically similar based on skill content — not just same category