首页 > 解决方案 > appStateManager.addListener(notifyListeners); 是什么?意思是?

问题描述

我正在关注 raywenderlich 的颤振学徒教程(第 7 章https://www.raywenderlich.com/books/flutter-apprentice/v1.0/chapters/7-routes-navigation),但我无法理解对 addListener 的调用(notifyListener) 在下面的代码中表示。具体来说,我认为 addListener 应该接受一个 Listener 对象,但在这里,它接受一个在超类中定义的函数!

class AppRouter extends RouterDelegate
    with ChangeNotifier, PopNavigatorRouterDelegateMixin {
 
  // 3
  final AppStateManager appStateManager;
  // 4
  final GroceryManager groceryManager;
  final ProfileManager profileManager;

  AppRouter({
    required this.appStateManager,
    required this.groceryManager,
    required this.profileManager,
  }) : navigatorKey = GlobalKey<NavigatorState>() {
    appStateManager.addListener(notifyListeners); 
    groceryManager.addListener(notifyListeners);
    profileManager.addListener(notifyListeners);
  }
...
}

知道发生了什么以及它是如何工作的吗?

标签: flutterdart

解决方案


本质上,这些addListener函数添加了一个监听器,它触发了所提供的函数。所以本质上,每次XXXStateManager状态改变时,都会触发类中的notifyListeners方法ChangeNotifier


推荐阅读