【问题标题】: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);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多