Как перехватить кнопку назад в AppBar во флаттере

Это точно правильно, потому что компилятор должен знать, какой тип он предназначен для распределения. Поэтому классы шаблонов, функции, перечисления и т. Д. Должны быть реализованы также в файле заголовка, если он должен быть опубликован или частично из библиотеки (статический или динамический), поскольку файлы заголовков НЕ скомпилированы в отличие от файлов c / cpp, которые находятся. Если компилятор не знает, что тип не может его скомпилировать. В .Net это возможно, потому что все объекты происходят из класса Object. Это не .Net.

0
задан ningomba 2.0 4 March 2019 в 04:06
поделиться

1 ответ

Вы можете окружить свой скаффолд на странице 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.
 }
0
ответ дан Filled Stacks 4 March 2019 в 04:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: