Мне нужна та же логика onBackPressed
Android в приложении флаттера, и я хочу закрыть приложение, когда я нажимаю кнопку возврата телефона.
Может ли кто-нибудь сказать мне, как это сделать, когда мы нажимаем кнопку возврата телефона, а не кнопку возврата приложения.
андроид:
@Override
public void onBackPressed()
{
// code here to show dialog
super.onBackPressed(); // optional depending on your needs
}
Обратитесь к этому сообщению: stackoverflow.com/questions/49356664/…
@Ishant Я думаю, что WillPopScope предназначен для кнопки «Назад» в приложении, а не для кнопки «Назад» на телефоне, верно?
@kartheekij WillPopScope работает для обоих
Для этого вы можете использовать УиллПопСкоп.
Это класс, который уведомляет вас, когда объемлющий 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 больше не работает.
в устройстве Android получая черный экран с WillPopScope пробовал все решения с навигатором во флаттере
Надеюсь, это поможет...
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
Вы можете использовать Navigator.pop(context);
или Navigator.maybePop(context);
;
А maybePop
можно слушать с помощью WillPopScope#onWillPop
;
Возможный дубликат поймать событие кнопки возврата Android на Flutter