1. ホーム
  2. flutter

[解決済み] FlutterでAndroidの "BACK "ボタンを無効化または上書きする方法は?

2022-04-14 08:04:43

質問

特定のページで、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');
  },
)

問題は、アンドロイドの画面下にある戻る矢印を押すと、pageOneに戻ることです。このボタンを全く表示させないようにしたいのです。 理想を言えば、例えばユーザーが5秒間スクリーンを指で押し続けない限り、このスクリーンから出ることができないようにしたいのです。(私は幼児向けのアプリを書こうとしており、親だけが特定のスクリーンからナビゲートできるようにしたい)。

どのように解決するのですか?

答えは 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(),
        ),
      ),
    ),
  );
}