change_notifier_builder
A widget builder whose content stays synced with one or more ChangeNotifier
s.
What is this?
Many of us flutter developers use ChangeNotifier
for state management, but there is no such thing as ChangeNotifierBuilder
.
This is basically an AnimatedBuilder
provided by flutter sdk, with a few minor modifitcations. Actually you might use AnimatedBuilder
instead.
Why you created this?
I created this package for 4 reasons.
-
For the purpose of state management,
ChangeNotifierBuilder
is a more reasonable and readable name thanAnimatedBuilder
, for a builder widget. -
Sometimes our model is not yet ready (i.e. equals
null
). In this case if you useAnimatedBuilder
it throws "animation cannot be null" exception. However if you useChangeNotifierBuilder
, the runtime value ofnotifier
can benull
. -
The
builder
method provides you theT notifier
object as a parameter, which is a bit more user-friendly. -
You can’t listen to multiple
ChangeNotifier
s withAnimatedBuilder
, so I createdMultiChangeNotifierBuilder
for this purpose.
Example
Let's say you have a model of ChangeNotifier
like this:
class CounterModel extends ChangeNotifier {
int _count = 0;
void increment() {
_count++;
notifyListeners();
}
int get count => _count;
}
Then in the build method of your widget:
ChangeNotifierBuilder(
// supply the instance of `ChangeNotifier` model,
// whether you get it from the build context or anywhere
notifier: _counterModel,
// this builder function will be executed,
// once the `ChangeNotifier` model is updated
builder: (BuildContext context, CounterModel? counter, _) {
return Text(
'${counter?.count ?? ''}',
style: Theme.of(context).textTheme.headline4,
);
},
)
Want to listen to a list of ChangeNotifier
s?
Use MultiChangeNotifierBuilder
instead!
Contributions
Feel free to contribute to this project.
If you find a bug or want a feature, but don't know how to fix/implement it, please fill an issue. If you fixed a bug or implemented a feature, please send a pull request.