
2026/08/02 1:45
Kaisel – Routes as Values。Flutter のための Dart 3 ネイティブルーター
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
本記事は、封じられた型(sealed types)と明示的なルート定義を基盤とした堅牢な Flutter ナビゲーション戦略を提唱します。このアプローチは、すべてのルートハンドリング場所をコンパイル時に発見することで、一般的な「未知のルート」ランタイムエラーを排除します。従来の
build_runner などの複雑なコード生成ツールやマジック文字列に依存する手法とは異なり、本アプローチでは kaisel ライブラリを使用して、ナビゲーションを軽量な値型として表し、スタックをルートオブジェクトのリストとしてモデル化し、push、pop、set の操作をサポートします。その結果、ナビゲーション状態はウィジェットツリーの外側でテスト可能となり、プロセス終了間にも復元可能です。チームはすぐにプロジェクトをリファクタリングして、壊れやすい生成されたコードとハードコーディングされた文字列を取り除くことができ、build_runner の必要性はありません。また、1 回だけ NavigatorObserver を登録することで、タブ切り替えや適応的なインプラース変更をキャプチャできます。その結果により清潔で保守性の高いコードベースが実現され、技術的負債が大幅に削減されると同時に、モバイルプラットフォーム全体におけるアプリケーションの信頼性が向上します。本文
入門ガイド:型付けされたルーティングへの移行
この入門ガイドでは、インストールから型付けされたルーティングへ移行するまでの手順を数分で完了できるように設計されています。主な特徴は以下の通りです。
シーールドされたルーティングと尽きないビルド
- ナビゲーションの仕組み: ルーティングに対する**スイッチ文(型付け)**です。
- 安全性の保証:
- コンパイラがすべてのルート箇所を自動的に検出します。
- ランタイムでの「不明なルート」エラーが防止されます。
スタックは値です
- 履歴の管理: ヒストリはルートオブジェクトのリストです。
- 操作の柔軟性:
、push
、pop
などの操作は標準的なリストメソッドとして利用できます。set - テストと復元:
- ウィジェットツリーを介さずに直接テスト可能です。
- プロセス終了後も状態を復元できます。
すべてのナビゲーションに単一の Observer が対応
- 統一された監視:
を一度登録すれば十分です。NavigatorObserver - 多様なイベント検知:
- ルーターが生成しないようなタブ切り替え。
- 適応型のインプレース変更。 これらの動きもすべて検知可能です。
ゼロのコードジェネレーション
- 魔法の有無:
や生成ファイル、マジック文字列は一切不要です。build_runner - 実装の簡潔さ: ルートはそのままDart のクラスとして定義されます。