記事ディレクトリ
コンセプト紹介
Flutter では、ルーティングは、異なるページ間のナビゲーションを管理するために使用されるメカニズムです。これにより、アプリケーション内のさまざまな画面やビューを切り替えて管理できます。Flutter は、基本ルーティング、名前付きルーティング、サードパーティのルーティング管理ライブラリなど、ルーティングを実装するさまざまな方法を提供します。ここでは、これらのさまざまな方法を詳しく見ていきます。
基本的なルーティング
Flutter は、Navigator クラスを通じて実装される基本的なルート管理メソッドを提供します。Navigator クラスは、アプリケーションの異なるページ間を移動するための一連のメソッド (push、pop、pushReplacement など) を提供します。これらのメソッドを使用して、スタック内のページのプッシュまたはポップ、ページ間の切り替え、ページの管理を行うことができます。
ページにジャンプします
//跳转到页面
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SecondScreen()),
);
ポップアップページ
Navigator.of(context).pop();
上記のサンプル コードは、 メソッドを使用してNavigator.push
アプリケーションを現在のページからSecondScreen
という名前の新しいページに切り替える方法を示しています。基本的なルーティングは単純なナビゲーション シナリオに適していますが、大規模なアプリケーションではより高度なルーティング管理が必要になる場合があります。
名前付きルーティング
名前付きルーティングは、各ページに一意の名前を割り当て、その名前をナビゲーションに使用することでルートを管理するより高度な方法です。これにより、ルートを構成するためのより明確で保守可能な方法が提供され、パラメーターの受け渡しがサポートされます。
まず、アプリケーションの MaterialApp で名前付きルーティング テーブルを構成します。
MaterialApp(
routes: {
'/': (context) => HomeScreen(),
'/second': (context) => SecondScreen(),
},
)
次に、Navigator.pushNamed
メソッドを使用して、指定された名前付きルートに移動します。
Navigator.pushNamed(context, '/second');
名前付きルートは、アプリケーションのルーティングを構成および管理するための、より構造化された明確な方法を提供します。これは小規模から中規模のアプリケーションに適しており、ルーティングの拡張または変更が必要な場合により柔軟です。
サードパーティのルーティング ライブラリ
Flutter が提供する基本ルートと名前付きルートに加えて、fluro、auto_route、get など、強力なサードパーティのルート管理ライブラリも選択できます。これらのライブラリは、より高度で柔軟なルーティング管理機能を提供します。
これらのライブラリは通常、より強力なルーティング構成メソッド、パラメータの受け渡し、ルーティングのインターセプト、アニメーション効果、ルーティング パラメータの受け渡し、ディープ リンク、その他の機能を提供します。これらは、アプリケーションのルーティングをより適切に整理および管理し、より優れたユーザー ナビゲーション エクスペリエンスを提供するのに役立ちます。
たとえば、fluro ライブラリを使用して名前付きルートを構成し、そのルートに移動するサンプル コードは次のとおりです。
final router = FluroRouter();
router.define('/second', handler: Handler(handlerFunc: (context, params) => SecondScreen()));
// 导航到命名路由
router.navigateTo(context, '/second');
サードパーティのルート管理ライブラリは通常、構成と使用法がより複雑ですが、より複雑なナビゲーション ロジックを必要とする大規模なアプリケーションやシナリオに適した、より高度で柔軟なルート管理機能を提供します。
Android ネイティブ ルーティング
ネイティブ Android 開発では、ルーティングとは、特定のメカニズムを通じてユーザーを 1 つのインターフェイス (アクティビティ) から別のインターフェイスに移動するプロセスを指します。
Android では、ページ ナビゲーションとルーティング管理を実装するためのさまざまな方法が提供されています。最も一般的な方法は、インテント ファイルとマニフェスト ファイルを使用することです。
インテントベースルーティング (インテントベースルーティング)
Android では、インテントはコンポーネント間でメッセージを渡し、アクションをトリガーするために使用されるメカニズムです。インテントを使用すると、ページ間のナビゲーションと通信を実現できます。
暗黙的なインテントを使用したルーティング
Android では、暗黙的インテントを使用して、起動するターゲットのアクティビティを指定できます。IntentのAction、Category、Dataプロパティを設定することで、指定した条件に一致するActivityにユーザーを誘導することができます。
Intent intent = new Intent();
intent.setAction("com.example.ACTION_PROFILE");
intent.setData(Uri.parse("http://example.com/profile/123"));
startActivity(intent);
上記の例では、暗黙的なインテントを作成し、アクションを「com.example.ACTION_PROFILE」に、データを「http://example.com/profile/123」に設定しました。システムは、インテントの条件一致に基づいて、一致するアクティビティを見つけて開始します。
明示的なインテントを使用したルーティング
暗黙的インテントに加えて、明示的インテントを使用して、起動対象のアクティビティのクラス名を直接指定することもできます。
Intent intent = new Intent(MainActivity.this, ProfileActivity.class);
intent.putExtra("userId", "123");
startActivity(intent);
上記の例では、明示的なインテントを作成し、ターゲット アクティビティのクラス名を ProfileActivity として指定しました。同時に、IntentputExtra
メソッドを通じてターゲットのアクティビティにパラメーターを渡すこともできます。
マニフェストベースのルーティング (マニフェストベースのルーティング)
Android のマニフェスト ファイル (AndroidManifest.xml) はアプリケーションの構成ファイルであり、アプリケーションのメタデータとコンポーネントの宣言が含まれています。マニフェストベースのルーティングは、マニフェスト ファイルでアクティビティを宣言し、そのインテント フィルターを設定することで実装できます。
<activity
android:name=".ProfileActivity"
android:label="Profile">
<intent-filter>
<action android:name="com.example.ACTION_PROFILE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http"
android:host="example.com"
android:pathPrefix="/profile/" />
</intent-filter>
</activity>
上の例では、マニフェスト ファイルで ProfileActivity を宣言し、そのインテント フィルターを設定しました。Action を「com.example.ACTION_PROFILE」に設定し、Data を「http://example.com/profile/」に設定することで、ProfileActivity がこれらの条件を満たすインテントを処理できるように指定します。
指定された条件を満たすインテントがトリガーされると、Android システムは一致するアクティビティを自動的に見つけて、マニフェスト ファイル内の構成に基づいて開始します。
これらは、ネイティブ Android 開発で一般的に使用されるルーティング実装です。インテント ファイルとマニフェスト ファイルは、ページのナビゲーションとルーティングを管理するための強力なメカニズムを提供します。インテント ファイルとマニフェスト ファイルを使用することで、開発者はアクティビティ間のナビゲーション関係を柔軟に定義および構成し、複雑なページ ジャンプ ロジックを実装できます。
Flutter のルーティングをより深く理解するために、Flutter のルーティングをネイティブ Android ルーティングと比較します。
要約する
これらのさまざまなルート管理方法を使用すると、アプリケーションのサイズとニーズに基づいて、Flutter アプリケーションでのページ ナビゲーションを管理および処理するための最も適切な方法を選択できます。基本ルーティング、名前付きルーティング、またはサードパーティのルーティング管理ライブラリのいずれであっても、これらはすべて、ページ間の切り替えや移動を行うための便利な方法を提供します。