【问题标题】:How to create one time listener for ChangeNotifier in dart如何在 dart 中为 ChangeNotifier 创建一次监听器
【发布时间】:2022-07-09 14:48:37
【问题描述】:
我想为 ChangeNotifier 添加一个监听器。并且只触发一次这个监听器。
例如:
final changeNotifier = ChangeNotifier();
changeNotifier.addListener(() {
debugPrint("Run callback");
});
changeNotifier.notifyListeners();
changeNotifier.notifyListeners();
changeNotifier.notifyListeners();
此代码将打印 3 次“运行回调”。我只想打印一次“运行回调”。如何做到这一点。
【问题讨论】:
标签:
flutter
dart
listener
changenotifier
【解决方案1】:
extension ChangeNotifierExtension on ChangeNotifier {
void addOneTimeListener(VoidCallback listener) {
addTimeListenerUntil(() {
listener();
return true;
});
}
void addTimeListenerUntil(bool Function() listener) {
VoidCallback? l;
l = () {
bool stop = listener();
if (stop && l != null) {
removeListener(l);
}
};
addListener(l);
}
}