【Flutter 2.2.3】Navigatorを使った画面遷移について

はじめに

Flutterでの画面遷移の方法について書いていきたいと思います。
私はiOSをよく書いていたので、この記事内ではiOSのようなクラス命名をしていますが、Dartでの正しい書き方とは限らないので注意が必要です。

route(ルート)について

アプリは通常、複数の画面で構成されます。Flutterでは1つ1つの画面をRouteと呼びます。iOSではViewController、AndroidではActivityのような名前で表現されます。
このRouteはWidgetの一部なので、正確にはViewControllerとは違います。

プラットフォーム UI部品の名前 画面の名前
iOS View ViewController
Android View Activity
Flutter Widget Route

また、iOSでいうよく利用するUIViewはFlutterではContainerというWidgetです。

画面遷移時にRouteを生成して遷移するパターン

まず始めに、プロジェクトのファイル構成を以下のようにするため、Controllersというディレクトリを作りFirstViewController.dartSecondViewController.dartを作成します。

ソースコード

main.dart内のrunApp(MaterialApp(...部分で、最初に起動する画面を設定しています。
MaterialAppとは、それ以降に配置するWidgetをアプリ内のテーマカラーとして一括で変更できたり、マテリアルデザインで統一されたWidget群を利用したりするために配置する1番の親(ベースのようなもの)となるWidgetのことです。

上記のように、遷移はNavigatorクラスを利用してpushpopすることができます。
iOSで言う、UINavigationController.pushに似ていますね!

あらかじめ名前を設定して遷移するパターン

遷移する各所でxxxViewController()と記述していってもよさそうですが、main.dartに画面遷移先がまとめて書いてあると、アプリの画面遷移先がいくつあるのか把握しやすいのがメリットかなと思っています。(iOSではWeb開発のような画面をPathで表現することは無かったので斬新な感じです。)

ソースコード

pushの書き方が少し変わり、第2引数にmain.dartで定義したルート名を指定します。
popについては、「Routeを生成して遷移するパターン」と変わらないので省略しました。

動作をさせるとこんな感じになりました。どちらの遷移のパターンも動作の見た目は全く同じです。

アプリ開発の誰もが通る道てきな「画面遷移」について書いてみました。
見て頂いてありがとうございます!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です