flutterメモ (popUntilで画面が全部消えた原因)
ついに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](https://is3-ssl.mzstatic.com/image/thumb/Purple126/v4/25/a0/b1/25a0b194-c033-6305-cca7-b801d0daa3ef/source/512x512bb.jpg)
ディスカッション
コメント一覧
まだ、コメントがありません