Каков эквивалентный метод onbackpressed в флаттере

Мне нужна та же логика onBackPressed Android в приложении флаттера, и я хочу закрыть приложение, когда я нажимаю кнопку возврата телефона.

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

андроид:

@Override
public void onBackPressed()
{
     // code here to show dialog
     super.onBackPressed();  // optional depending on your needs
}

Возможный дубликат поймать событие кнопки возврата Android на Flutter

Jordan Davies 22.01.2019 13:27

Обратитесь к этому сообщению: stackoverflow.com/questions/49356664/…

Ishant 22.01.2019 13:31

@Ishant Я думаю, что WillPopScope предназначен для кнопки «Назад» в приложении, а не для кнопки «Назад» на телефоне, верно?

kartheeki j 22.01.2019 13:35

@kartheekij WillPopScope работает для обоих

Sami Kanafani 22.01.2019 14:12
12
4
13 630
3

Ответы 3

Для этого вы можете использовать УиллПопСкоп. Это класс, который уведомляет вас, когда объемлющий ModalRoute (внутренне используемый с Navigator) имеет значение вот-вот выскочит. Это даже оставляет вам выбор, хотите ли вы, чтобы это произошло.

Просто оберните Scaffold второго экрана в WillPopScope.

return WillPopScope(
  onWillPop: () async {
    // You can do some work here.
    // Returning true allows the pop to happen, returning false prevents it.
    return true;
  },
  child: ... // Your Scaffold goes here.
);

Недостатком этого решения является то, что жест назад на iOS больше не работает.

Timo Bähr 09.08.2020 17:19

в устройстве Android получая черный экран с WillPopScope пробовал все решения с навигатором во флаттере

s.j 22.12.2020 11:12

Надеюсь, это поможет...

Future<bool> _onBackPressed() async {
    // Your back press code here...
    CommonUtils.showToast(context, "Back presses");
}

WillPopScope создает виджет, который регистрирует обратный вызов, чтобы наложить вето на попытки пользователя закрыть вложенный ModalRoute.

@override 
Widget build(BuildContext context) {
    return new WillPopScope(
        onWillPop: _onBackPressed,
        child: ...child
    );
}

Пожалуйста, объясните, почему это решение работает. stackoverflow.com/help/how-to-answer

Suit Boy Apps 26.09.2019 06:56

Вы можете использовать Navigator.pop(context); или Navigator.maybePop(context);;

А maybePop можно слушать с помощью WillPopScope#onWillPop

Другие вопросы по теме