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