颤振中onbackpressed的等效方法是什么

kar*_*i j 2 android dart flutter

我希望在flutter应用程序中具有与Android相同的onbackpressed逻辑,并且我想在单击手机后退按钮时关闭该应用程序。

当我们单击电话返回而不是应用返回按钮时,谁能告诉我该怎么做。

android:

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

Mar*_*cel 6

您可以为此使用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.
);
Run Code Online (Sandbox Code Playgroud)

  • 此解决方案的缺点是 iOS 上的后退手势不再起作用。 (2认同)

Ank*_*kit 5

希望这会有所帮助...

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

WillPopScope 创建一个小部件,该小部件注册回调以否决用户关闭封闭 ModalRoute 的尝试。

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