【Flutter】Navigator 1.0 における Named routesが非推奨の理由
まとめ
Navigator 1.0 における Named routes が非推奨な理由は以下の2点である。
1つは、Named routesはあらかじめMaterialAppウィジェットのroutesマップに定義されるため、動的なルーティング要件に柔軟に対応するのが難しいことである。
もう1つは、ブラウザの進むボタンをサポートしていないことである。
裏を返せば、簡素なルーティングかつ、Flutter で Webアプリケーションを作らない場合であれば、Named routes を使ってもよい。
きっかけ
以下のツイートを見て、気になったから。
Named routes が非推奨であると書かれているソースはこれ
We don’t recommend using named routes for most applications. For more information, see the Limitations section below.
ほとんどの用途で名前付きルートを使うことはお勧めしません。詳細については、以下の制限事項のセクションを参照してください。
Although named routes can handle deep links, the behavior is always the same and can’t be customized. When a new deep link is received by the platform, Flutter pushes a new Route onto the Navigator regardless where the user currently is.
名前付きRouteはディープリンクを扱うことができますが、動作は常に同じで、カスタマイズすることはできません。新しいディープリンクがプラットフォームによって受信されると、Flutterはユーザーが現在どこにいるかに関係なく、新しいRouteをNavigatorにプッシュする。
Flutter also doesn’t support the browser forward button for applications using named routes. For these reasons, we don’t recommend using named routes in most applications.
Flutterはまた、名前付きルートを使ったアプリケーションのブラウザの進むボタンもサポートしていません。これらの理由から、ほとんどのアプリケーションで名前付きルートを使うことはおすすめしません。
These routes must be predefined. Although you can pass arguments to a named route, you can’t parse arguments from the route itself. For example, if the app is run on the web, you can’t parse the ID from a route like /details/:id.
これらのルートは定義済みでなければなりません。名前付きルートに引数を渡すことはできますが、ルート自体から引数を解析することはできません。たとえば、アプリがWeb上で実行される場合、/details/:idのようなルートからIDを解析することはできません。