go_routerの導入

目次

go_routerとは

go_router は、Flutter用のルーティングライブラリで、宣言的なAPIを提供して、ナビゲーションとルーティングを簡単にすることを目指しています。このライブラリは、Flutterの Navigator APIの代替として使われ、特に大規模なアプリケーションでのルーティングの管理を簡素化するのに役立ちます。

go_routerのインストール

flutter pub add go_router

主要機能

  1. 宣言的なルーティング: go_router は、ルートを宣言的に設定し、URLと連動させることができます。これにより、アプリケーション内のナビゲーション状態を簡単に管理できます。
  2. ネストされたナビゲーション: サブルートを使って、複雑なネストされたナビゲーションシナリオを管理できます。
  3. パラメータ化されたルーティング: パスパラメータやクエリパラメータを使用して、動的なルートを作成できます。
  4. ディープリンクのサポート: モバイルとウェブの両方でディープリンクをサポートしており、外部から特定の画面に直接ナビゲートすることができます。
  5. リダイレクトとガード: アクセス制御や認証フローを管理するためのリダイレクトとガード機能を提供します。
  6. 型安全なナビゲーション: コードの中でパス名をハードコードする代わりに、型安全な方法でナビゲーションを実行できます。

基本的な使い方

go_router の基本的な設定は、GoRouter オブジェクトを作成し、アプリケーションのルートに設定することで行います。以下は、簡単な例です。

import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';

void main() {
  final goRouter = GoRouter(
    routes: [
      GoRoute(
        path: '/',
        builder: (context, state) => HomeScreen(),
      ),
      GoRoute(
        path: '/details/:id',
        builder: (context, state) {
          final id = state.params['id']!;
          return DetailsScreen(id: id);
        },
      ),
    ],
  );

  runApp(MyApp(goRouter: goRouter));
}

class MyApp extends StatelessWidget {
  final GoRouter goRouter;

  MyApp({required this.goRouter});

  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
      routeInformationParser: goRouter.routeInformationParser,
      routerDelegate: goRouter.routerDelegate,
    );
  }
}

この例では、2つのルート(ホームと詳細画面)を定義しています。GoRoute オブジェクトを使って、各画面のパスとビルダーメソッドを指定します。

注意点

  • go_router はFlutter 2.0以降での使用を想定しています。
  • ナビゲーションの状態はURLに基づいており、ウェブアプリケーションで特に有用ですが、モバイルアプリケーションでも同じように機能します。
  • 大規模なアプリケーションでの使用を念頭に置いて設計されているため、小規模なアプリケーションではオーバーキルになる可能性があります。

go_router は、Flutterのナビゲーションとルーティングをより簡単かつ効果的に管理するための強力なツールです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次