flutterroutesupdating

Idiomatic way to update a Flutter page after data was edited by another page?


In Flutter let a route /a is displayed. Then I press Edit button what pushes route /b. The route /b changes data in the SQLite DB and then I call Navigator.pop so returning to the route /a.

Now route /a displays the old (unedited) version of the data.

I need in some way route /b to send to route /a an "update" signal.

How to do it? The best solution I came to is to pass the widget /a (or better its state) in pushNamed arguments parameter. This is awkward however, particularly because this requires onUpdate handler to be passed down to the subwidget of /a that actually reads data from DB possibly through a chain of several widgets. Is the way that I described here the idiomatic Flutter way, or is there a better solution?


Solution

  • Wait for the result from another route.

    final result = await Navigator.push(...);
    

    Return the result.

    Navigator.pop(context, 'Hello!');
    

    See Return data from a screen for details.