有没有办法将数据从一个小部件广播到其他小部件?类似于Android上的BroadcastReceiver或iOS上的NSNotificationCenter。
具体来说,我试图检测导航器何时弹出或推送新视图。我将navigatorObservers添加到MaterialApp。当一个小部件回到前台时,我希望能够通过广播didPush和didPop中的变化以及当前前景中的实际路径来通知它
答案 0 :(得分:10)
Navigator.push
会返回Future
,该Navigator.pop
将在调用push
时完成(并且可以选择将其用于将数据传递回名为onPressed
的窗口小部件)。例如,假设您的登录按钮具有此onPressed: () async {
bool isLoggedIn = await Navigator.pushNamed(context, '/login');
if (isLoggedIn) {
// do something
}
}
处理程序:
Navigator.pop(true)
当您的登录页面调用Future
时,true
将完成isLoggedIn
的值,该值将分配给null
变量。 (如果用户使用后退按钮返回上一个屏幕,您将获得showDialog
。)
这就是{{1}}的工作原理。