一尘不染

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

flutter

有没有一种方法可以将数据从一个小部件广播到其他小部件?与Android上的BroadcastReceiver或iOS上的NSNotificationCenter相似。

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


阅读 397

收藏
2020-08-13

共1个答案

一尘不染

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

2020-08-13