Code generation has many use cases in our Flutter apps, including JSON serialization, navigation, and internationalization.
Packages like Freezed compensate for missing Dart language features such as sealed unions and offer many useful features.
Many Flutter packages rely on build_runner, a build system for Dart code generation.
Unfortunately, build_runner takes long time to run because by default it analyzes all the Dart source files in your project.
There are two ways to mitigate this:
- move all files that depend on codegen to a separate package
- add a
build.yamlfile that specifies a subset of files to be processed:
targets: $default: builders: freezed:freezed: generate_for: include: - lib/models/**.dart
Setting this up correctly can save you a lot of time in the long run. 👍
You can use a suffix such as
*.codegen.dart for all files that need to be processed by
build_runner and update the
build.yaml like this:
targets: $default: builders: freezed:freezed: generate_for: include: - lib/**.codegen.dart
This way you can place the files anywhere you want in your project.
This tip was inspired by this thread on Twitter.
Build and grow in-app purchases. Glassfy’s Flutter SDK solves all the complexities and edge cases of in-app purchases and subscriptions so you don't have to. Test and build for free today by clicking here.