Как мне переосмыслить sh мою главную страницу после того, как я открыл мою вторую страницу? - PullRequest
1 голос
/ 18 января 2020

Моя главная страница состоит из ListView, созданного FutureBuilder. Вторая страница открывается FAB на первой странице и используется для добавления элементов в ListView на первой странице. Моя проблема в том, что я не могу найти способ обновить sh страницу 1 после автоматического добавления второй страницы, чтобы показать добавленные элементы.

Я искал другие темы с похожими проблемами, но не было окончательный ответ.

Ответы [ 2 ]

3 голосов
/ 19 января 2020

Что вы можете сделать, это дождаться всплывающего сообщения со следующей страницы, и, как только это произойдет, вы можете вызвать функцию, которая перезагружает ваши данные.

Создайте функцию с именем pushRoute, которая проталкивает маршрут в навигатор. составлять и использовать эту функцию, когда вы хотите перемещаться.

Поскольку это асинхронная функция, вы можете поставить цепочку .then () в конце. Все, что вы передадите в .then (), произойдет после того, как Navigator.pop () попадет на вторую страницу.

pushRoute() async {
  await Navigator.push(...);
}
...
...
//when you want to navigate to page 2, use pushRoute().
//inside the onTap of your FAB
onTap() {
  pushRoute().then(() { //this .then() will be triggered when the Navigator.pop() is hit on the second page.
    loadData();
  }); //put all your data loading code in this function. (You can use the same loadData in the initState to load the very first time.)
}
0 голосов
/ 19 января 2020

Мне удалось внести изменения в ListView, предоставив ему новый список, который является точно таким же списком, в который я добавил элемент.

listOfElements.add(element);
setState(() {
  listOfElements = List.from(listOfElements);
});
...