💭
【Flutter】go_router_builderを3系にした場合の必須対応
はじめに
2025年6月6日に go_router_builder
がバージョン 3.0.0 へアップデートされました。
このアップデートでは、すべてのルートクラスに対して with _$RouteName
の mixin を明示的に追加することが必須となり、以前の書き方ではビルドが通らなくなっています。
「突然ビルドが通らなくなった」「以前の記事を参考にしていたらハマった」という方の助けになれば幸いです。
記事を執筆時点での筆者の環境
[✓] Flutter (Channel stable, 3.29.0, on macOS
15.3.1 24D70 darwin-arm64, locale ja-JP)
[✓] Android toolchain - develop for Android
devices (Android SDK version 35.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 16.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2024.2)
[✓] VS Code (version 1.100.0)
バージョン2系までの書き方
go_router_builderのバージョン2系まではルートクラスは以下のように定義していました。
class HomeRoute extends GoRouteData {}
しかし、このままだと3系にバージョンアップした場合、自動生成は以下のように失敗します。
[SEVERE] go_router_builder on lib/core/router/route/route.dart:
Missing mixin clause `with _$HomeRoute`
package:go_router_builder_sample/core/router/route/route.dart:84:7
╷
84 │ class HomeRoute extends GoRouteData {
│
バージョン3系移行の書き方
shellのエラー文にもあるとおり、クラスに with _$HomeRoute
を追加します。
class HomeRoute extends GoRouteData with _$HomeRoute {}
pub.devの方でもドキュメントが変更されていました。
追記した直後はエラーのままですが、自動生成を動かせばその後はエラーは消えて無事に自動生成が行われます。
flutter pub run build_runner build --delete-conflicting-outputs
終わりに
本記事では、go_router_builder
をバージョン 3.0.0 へ移行する際に必須となる with _$RouteName
の追加について解説しました。
過去のサンプルや記事を参考にしていると、バージョンアップによる仕様変更に気づかずビルドエラーに悩まされることがあります。特に今回のように一見小さな文法の違いであっても、ビルドが通らない原因となるため注意が必要です。
パッケージの更新後は、公式の changelog
やドキュメントをこまめに確認することが、トラブルを未然に防ぐ鍵となります。
この記事が同じようなエラーで悩む方の手助けになれば幸いです。
Discussion