Open6

【Flutter】Navigator 1.0 における Named routesが非推奨の理由

8rine238rine23

まとめ

Navigator 1.0 における Named routes が非推奨な理由は以下の2点である。
1つは、Named routesはあらかじめMaterialAppウィジェットのroutesマップに定義されるため、動的なルーティング要件に柔軟に対応するのが難しいことである。
もう1つは、ブラウザの進むボタンをサポートしていないことである。

裏を返せば、簡素なルーティングかつ、Flutter で Webアプリケーションを作らない場合であれば、Named routes を使ってもよい。


きっかけ

以下のツイートを見て、気になったから。

https://twitter.com/kumamo_tone/status/1755818380337246561

8rine238rine23

Named routes が非推奨であると書かれているソースはこれ

https://docs.flutter.dev/ui/navigation#using-named-routes

8rine238rine23

We don’t recommend using named routes for most applications. For more information, see the Limitations section below.


ほとんどの用途で名前付きルートを使うことはお勧めしません。詳細については、以下の制限事項のセクションを参照してください。

8rine238rine23

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にプッシュする。

8rine238rine23

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はまた、名前付きルートを使ったアプリケーションのブラウザの進むボタンもサポートしていません。これらの理由から、ほとんどのアプリケーションで名前付きルートを使うことはおすすめしません。

8rine238rine23

https://medium.com/flutter/learning-flutters-new-navigation-and-routing-system-7c9068155ade#:~:text=は残ります。-,名前付きルート,-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を解析することはできません。