Как перехватить кнопку назад в AppBar во флаттере - PullRequest
0 голосов
/ 03 марта 2019

Я использую перехватчик https://pub.dartlang.org/packages/back_button_interceptor для выполнения метода, когда страница 1 возвращается со страницы 2.

Если я возвращаюсь со страницы 2 на страницу 1 с помощью кнопки возврата устройства, метод

Но если я вернусь со страницы 2 на страницу 1 с помощью кнопки со стрелкой на appBar, я не смогу выполнить метод.

Как функциональность кнопки со стрелкой назад по умолчанию можеткнопка возврата устройства?

1 Ответ

0 голосов
/ 03 марта 2019

Вы можете окружить свой эшафот на странице 2 с помощью WillPopScope, установите для onWillPop значение false, чтобы предотвратить появление страницы системой, а затем добавьте собственную кнопку «назад» в ведущий виджет панели приложения и выполните в ней всплывающее окно.

@override
Widget build(BuildContext context) {
  return new WillPopScope(
    onWillPop: () async => false,
    child: new Scaffold(
      appBar: new AppBar(
        title: new Text("data"),
        leading: new IconButton(
          icon: new Icon(Icons.ac_unit),
          onPressed: () => Navigator.of(context).pop(),
        ),
      ),
    ),
  );
}

код ответа от этого поста

Редактировать: дополнение к странице 2 для управления навигацией

В дополнение кПриведенный выше код добавит приведенный ниже код на страницу 2. Измените

Navigator.of(context).pop() 

на

Navigator.of(context).pop('upload_files')

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

var navigationResult = await Navigator.push(
        context,
        new MaterialPageRoute(
            builder: (context) => Page2()));


 if(navigationResult == 'upload_files') {
    uploadFiles(); // Perform your custom functionality here.
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...