android - 在 Flutter 上捕获 Android 后退按钮事件

有什么方法可以从 Android 后退按钮捕获 onBackPressed 事件?

我尝试了 WillPopScope 但我的 onWillPop 功能仅在我点击 Material 返回箭头按钮时触发

我是这样说的:

class MyView extends StatelessWidget{

Widget build(BuildContext context) {

    return new WillPopScope(
      onWillPop: () async {
        debugPrint("Will pop");
        return true;
      },
      child: ScopedModel<AppModel>(
      model: new AppModel(),
      child: new Scaffold(......

我需要捕获它,因为不知何故我的屏幕在按下后退按钮时表现不正确,它会弹出屏幕及其下方的屏幕,但不知何故,使用 Material 后退箭头按钮工作正常。

更新:

代码有效,我的问题不在此屏幕的弹出窗口中,而是在上一个屏幕上,我使用了 2 个 MaterialApp 小部件,不知何故它给出了一种奇怪的行为。

最佳答案

为了防止返回 WillPopScope是正确的方法,应该如下使用:

class Page2 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new WillPopScope(
      child: new Scaffold(
        appBar: new AppBar(
          title: new Text('Page 2'),
        ),
        body: new Center(
          child: new Text('PAGE 2'),
        ),
      ),
      onWillPop: () async {
        return false;
      },
    );
  }
}

Future<T> pushPage<T>(BuildContext context, Widget page) {
  return Navigator.of(context)
      .push<T>(MaterialPageRoute(builder: (context) => page));
}

可以像这样调用页面:

pushPage(context, Page2());

https://stackoverflow.com/questions/50452710/

相关文章:

android - 如何在 Flutter 中禁用 FlatButton 的飞溅突出显示?

dart - 使用 BLoC 处理导航的正确方法

android - 在 Android Studio 中开发的 Flutter 项目的合法 .git

google-cloud-firestore - 如何使用 Flutter 配置 Firebase

android - 在 Flutter 项目的 android studio 上初始化 Gradle

dart - 如何格式化内插字符串

swift - 如何在 Flutter 中启用对现有项目的 Swift 支持

dart - Flutter 从 Firebase 存储加载图像

json - 在 Dart 中解析具有嵌套对象数组的 JSON?

flutter - Flutter 中的 MyApp 类错误未定义方法 'setState'