小编典典

如何在 Flutter 中停用或覆盖 Android“BACK”按钮?

all

有没有办法在特定页面上停用 Android 后退按钮?

class WakeUpApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: "Time To Wake Up ?",
      home: new WakeUpHome(),
      routes: <String, WidgetBuilder>{
        '/pageOne': (BuildContext context) => new pageOne(),
        '/pageTwo': (BuildContext context) => new pageTwo(),
      },
    );
  }
}

在 pageOne 上,我有一个按钮可以转到 pageTwo:

new FloatingActionButton(
  onPressed: () {    
    Navigator.of(context).pushNamed('/pageTwo');
  },
)

我的问题是,如果我按 android 屏幕底部的后退箭头,我会返回 pageOne。我希望这个按钮根本不显示。理想情况下,除非用户将手指按住屏幕 5
秒钟,否则我希望无法离开此屏幕。(我正在尝试为幼儿编写一个应用程序,并且希望只有父母能够导航出特定的屏幕)。


阅读 61

收藏
2022-06-28

共1个答案

小编典典

答案是WillPopScope。它将防止页面被系统弹出。您仍然可以使用Navigator.of(context).pop()

@override
Widget build(BuildContext context) {
  return new WillPopScope(
    onWillPop: () async => false,
    child: new Scaffold(
      appBar: new AppBar(
        title: new Text("data"),
        leading: new IconButton(
          icon: new Icon(Icons.ac_unit),
          onPressed: () => Navigator.of(context).pop(),
        ),
      ),
    ),
  );
}
2022-06-28