💭

【Flutter】go_router_builderを3系にした場合の必須対応

に公開

はじめに

2025年6月6日に go_router_builder がバージョン 3.0.0 へアップデートされました。

https://pub.dev/packages/go_router_builder/changelog

このアップデートでは、すべてのルートクラスに対して 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