-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Labels
discussionThere's a lot to discussThere's a lot to discussenhancementNew feature or requestNew feature or request
Milestone
Description
I propose to discuss what the functionality should look like to allow convenient use of Cardoteka
with the Watcher
mixin to attach a callback to a ChangeNotifier
object.
I'm considering this kind of hagfish for now:
mixin NotifierDetacher on ChangeNotifier {
List<VoidCallback>? _onDisposeCallbacks;
void onDispose(void Function() cb) {
_onDisposeCallbacks ??= [];
_onDisposeCallbacks!.add(cb);
}
@override
void dispose() {
_onDisposeCallbacks?.forEach((cb) => cb.call());
_onDisposeCallbacks = null;
super.dispose();
}
}
This will allow you to do this in the future:
class OrderNotifier with ChangeNotifier, NotifierDetacher {
final _orders = <String>[];
void addOrder(String value) {
_orders.add(value);
notifyListeners();
print('New order: $value');
}
}
And then attach the wiretap like this:
void main() {
// ignore_for_file: definitely_unassigned_late_local_variable
// to do: initialize
late CardotekaImpl cardoteka;
late Card<String> lastOrderCard;
final notifier = OrderNotifier();
cardoteka.attach(
lastOrderCard,
notifier.addOrder, // <- nice bonus :)
detacher: notifier.onDispose, // <- THIS
);
cardoteka.set(lastOrderCard, '#341');
// 1. a value was saved to storage
// 2. console-> New order: #341
}
Please, semantics, logic, and naming are both important. Share your thoughts :) 🙏
Metadata
Metadata
Assignees
Labels
discussionThere's a lot to discussThere's a lot to discussenhancementNew feature or requestNew feature or request