Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Broadcast data to multiple widgets in Flutter

Is there a way to broadcast data from one widget to other widgets? Similar to a BroadcastReceiver on Android or NSNotificationCenter on iOS.

Specifically, I'm trying to detect when a Navigator pops or pushes a new view. I added navigatorObservers to MaterialApp. And when a widget comes back to the foreground, I want to be able to notify it by broadcasting changes from didPush and didPop with the actual route that's in the current foreground

like image 802
user3217522 Avatar asked Jun 07 '17 07:06

user3217522


1 Answers

Navigator.push returns a Future that will complete when Navigator.pop is called (and this can optionally be used to pass data back to the widget that called push). So for example suppose your login button has this onPressed handler:

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

When your login page calls Navigator.pop(true), the Future will complete with a value of true which will be assigned to the isLoggedIn variable. (You'll get null if the user uses the back button to return to the previous screen.)

This is how showDialog works as well.

like image 138
Collin Jackson Avatar answered Sep 22 '22 18:09

Collin Jackson