向 Flutter 中的多个小部件广播数据

Broadcast data to multiple widgets in Flutter

有没有办法将数据从一个小部件广播到其他小部件?类似于 Android 上的 BroadcastReceiver 或 iOS 上的 NSNotificationCenter。

具体来说,我正在尝试检测导航器何时弹出或推送新视图。我将 navigatorObservers 添加到 MaterialApp。当一个小部件回到前台时,我希望能够通过广播来自 didPush 和 didPop 的更改以及当前前台中的实际路由来通知它

Navigator.push returns 一个 Future 将在 Navigator.pop 被调用时完成(这可以选择性地用于将数据传递回调用 push).因此,例如假设您的登录按钮具有此 onPressed 处理程序:

onPressed: () async {
  bool isLoggedIn = await Navigator.pushNamed(context, '/login');
  if (isLoggedIn) {
    // do something
  }
}

当您的登录页面调用 Navigator.pop(true) 时,Future 将以 true 的值完成,该值将分配给 isLoggedIn 变量。 (如果用户使用后退按钮 return 返回上一屏幕,您将获得 null。)

这也是 showDialog 的工作方式。