flutterメモ (popUntilで画面が全部消えた原因)

2022年3月20日

ついにflutterに手を出しました。個人的メモ。

flutterで画面遷移する時。
例えば画面1⇨画面2⇨画面3と移動して
画面3⇨画面1に戻るには
下のようにroutes:〜でroute名を指定して、画面3のボタンに
Navigator.of(context).popUntil(ModalRoute.withName(“/home”))
を指定すれば最初に戻るよ!(細かいことは他blogに書いてあるので省略)
みたいなこと書いてあるが、戻らなかった(画面が全部消えてしまう)ので色々調べたメモ。

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
         primarySwatch: Colors.indigo,
         visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter デモホームページ'),
      routes: <String, WidgetBuilder>{
        "/home": (BuildContext context) => MyHomePage(),
        "/subpage": (BuildContext context) => SubPage(),
        "/subpage2": (BuildContext context) => SubPage2()
      },
    );
  }
}

実は、
home: MyHomePage(title: ‘Flutter デモホームページ’),
こいつでpushされた画面はroute名が”/”になるっぽい。
なので
Navigator.of(context).popUntil(ModalRoute.withName(“/home”))
(route名”/home”になるまでpopする(画面を消す))
のボタン押すと画面が全部消える。(”/home”なんてないから)
Navigator.of(context).popUntil(ModalRoute.withName(“/”))
に変えると上手くいく。
もしくは

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
         primarySwatch: Colors.indigo,
         visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      initialRoute: "/home",
      routes: <String, WidgetBuilder>{
        "/home": (BuildContext context) => MyHomePage(title: 'Flutter デモホームページ'),
        "/subpage": (BuildContext context) => SubPage(),
        "/subpage2": (BuildContext context) => SubPage2()
      },
    );
  }
}

home: MyHomePage(title: ‘Flutter デモホームページ’),
を消して、
initialRoute: “/home”,
を指定する。
画面1のroute名が”/home”になるので、
Navigator.of(context).popUntil(ModalRoute.withName(“/home”))
で画面1に戻る。

以上

flutterで作った買い物アプリがリリースできました。
よければ使ってみてください。メモも溜まってるので投稿していかなければ・・・。

kaupp
kaupp
無料
posted withアプリーチ