Flutter - закрытие диалогового окна после перехода на новую страницу - PullRequest
0 голосов
/ 06 мая 2018

В настоящее время я создаю приложение todo, в котором, если я долго нажму плитку задачи, появится всплывающее диалоговое окно. После перенаправления на страницу редактирования вы можете редактировать и сохранять изменения. Однако, как только вы закончите, вы будете перенаправлены на домашнюю страницу, но вас приветствует предыдущий диалог. Как мне закрыть диалоговое окно после того, как вы перенаправлены на страницу редактирования?

Вот код диалога показа:

Future _showAlert(data) async{
return showDialog<Null>(
  context: context,
  barrierDismissible: true,
  builder: (BuildContext context) {
    return new AlertDialog(
      title: new Text('Would you like to make changes?', style: new TextStyle(fontSize: 17.0)),
      actions: <Widget>[
        new FlatButton(
          child: new Text('Edit'),
          onPressed: (){
            Navigator.push(context, new MaterialPageRoute(builder: (context) => new EditTodoPage(todo: data, todoID: selectedTodoId,)));
          },
        ),
        new FlatButton(
          child: new Text('Delete'),
          onPressed: (){
            _delete(selectedTodoId);
            Navigator.of(context).pop();
          },
        )
      ],
    );
  }
);

}

Ответы [ 2 ]

0 голосов
/ 31 июля 2019

Navigator.push возвращает будущее, которое завершается после вызова Navigator.pop на странице редактирования.

После этого вы можете закрыть свой диалог, например:

onPressed: () {
  Navigator.push(/* ... */)
    .then((result) {
      Navigator.of(context).pop();
    });
},
0 голосов
/ 06 мая 2018

Вместо того, чтобы просто позвонить pop, чтобы вернуться на домашнюю страницу, вы можете использовать popUntil.

Примером реализации будет «pop to route» / «», который должен быть вашим домом.

Navigator.popUntil(context, (route) {
  return route.settings.name == "/";
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...