как работать с логикой переключения страниц при обратном нажатии во флаттере - PullRequest
0 голосов
/ 02 июня 2018

Я новичок в трепетании, я вернул событие нажатия с помощью onWillPop (), чтобы показать диалоговое окно с предупреждением.Но мне нужно показать диалоговое окно с предупреждением только для домашней страницы (например, Вы хотите выйти?).В коде у меня есть тип, подобный текущей странице, если текущая страница является домашней, тогда показывать только диалог оповещения или иным образом переключаться на домашнюю страницу.

Код

if(currentType == Home)
{
    showExitDialog();
}
else
{
   switchToHome();
}

Где я могу с этим справиться?

1 Ответ

0 голосов
/ 02 июня 2018

установить пользовательское свойство leading на панели приложения.

Значение по умолчанию - вернуться на одну страницу назад, поэтому, если вы ничего не установите, появится стрелка назад, и она будет делать Navigator.of(context).maybePop();

Из документов Navigator

Если это значение равно null, а для [automaticImplyLeading] установлено значение true, [AppBar] будет подразумевать соответствующий виджет.Например, если [AppBar] находится в [Scaffold], который также имеет [Drawer], [Scaffold] заполнит этот виджет [IconButton], который открывает ящик (используя [Icons.menu]).Если [Drawer] нет и родительский [Navigator] может вернуться назад, [AppBar] будет использовать [BackButton], который вызывает [Navigator.maybePop].

Но если вы хотите переопределить егосделайте это

на своей домашней странице

  appBar: AppBar(
    leading: IconButton(icon: Icon(Icons.exit_to_app),onPressed: (){
      exitTheApp();
    },),
  ),

на других панелях приложений

  appBar: AppBar(
    leading: IconButton(icon: Icon(Icons.home),onPressed: (){
      showHomePage();
    },),
  ),
...