向 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
的工作方式。
有没有办法将数据从一个小部件广播到其他小部件?类似于 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
的工作方式。