[flutter] go_routerの使い方

image

go_routerとは

ざっくり説明すると、画面遷移を管理する時に便利なパッケージです。

Navigatorの上位互換ですね。

特徴と以下の通り

  • テンプレート構文によるパスとクエリパラメータの解析(例:”user/:id”)
  • 目的地(副ルート)の画面を複数表示させる
  • リダイレクトのサポート – アプリケーションの状態に応じて、ユーザーを別のURLに再ルーティングすることができます(例えば、ユーザーが認証されていない場合のサインインなど)。
  • ShellRouteによる複数のNavigatorのサポート – 一致したルートに基づいて、独自のページを表示する内側のNavigatorを表示することができます。例えば、画面の下部に表示されるBottomNavigationBarを表示するには、次のようにします。
  • MaterialアプリとCupertinoアプリの両方をサポートします。
  • Navigator APIとの後方互換性

詳細は公式のドキュメントをご確認ください。

基本的な使い方

まずは基本的な使い方から見ていきましょう。

画面遷移の設計

まずは画面遷移を設計します。

例えばこんな感じ。

以下のような形で遷移させたい画面を一つ一つ記述していきます。

HTML
  • 任意のパス:フォルダのディレクトリのような感じで記載していきます。(アプリ起動後に最初に表示したい画面は’/’を指定する)
  • 任意の画面:表示させたい画面のwidgetを記載する

go_routerを使用する準備

go_routerで画面遷移を実装するには以下のコードのようにMaterialApp .routerを記述する必要があります。

色々細かい設定がありますので、公式のドキュメントでご確認ください。

画面を作成する

遷移する画面を作成します。

最初に表示される画面

最初のページから遷移する画面

アプリの実行結果

画面遷移方法

画面遷移したいときは以下のように記述します。

HTML

3つの画面遷移方法

  • go(”遷移先のパス) : 遷移先の画面にスタックを置き換える
  • push(‘遷移先のパス’) : 現在表示中の画面の上に遷移先の画面をスタックする
  • pop() : 一つ前のスタックに戻る

詳細はAPIリファレンスを参照してください。

bottomNavigationBarを使用する方法

画面遷移の設計

BottomNavigationBarを使用する際はShellRouter()を使用します。

各ページの実装

最初に表示される画面

以下のようにPush()使用すると純粋なPage1.dartが表示される(BottomNavigationBarが表示されない)ので注意

BottomNavigationBarの実装

bodyの中身はShellRouteがchildで渡してくれるので、引数で受け取るようにするのがポイント

Navigationbarの使い方は以下を参照してください。

image [flutter3]NavigationBarの基本的な使い方(サンプルコード付き)

Page1の実装

page1Detailの実装

Page2,Page2Detailの実装

page1,page1detailと同じため省略

アプリの実行結果

関連記事

image [go_router]AssertionError (‘package:go_router/src/configuration.dart’: Failed assertion: line 40 pos 18: ‘!route.path.startsWith(‘/’) && !route.path.endsWith(‘/’)’: sub-route path may not start or end with /: GoRoute(name: null, path: /StoreLocation/detail))の対処法

コメントを残す

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

CAPTCHA


error: Content is protected !!