代码生成在我们的Flutter应用程序中有很多用例,包括JSON序列化、导航和国际化。
像Freezed这样的包弥补了Dart语言功能的缺失,如密封的联合体,并提供了许多有用的功能。
许多Flutter软件包依赖于build_runner,这是一个用于生成Dart代码的构建系统。
不幸的是,build_runner需要很长的时间来运行,因为默认情况下它会分析你项目中所有的Dart源文件。
有两种方法可以缓解这个问题。
- 将所有依赖codegen的文件移到一个单独的包中
- 添加一个
build.yaml文件,指定要处理的文件的子集。
targets:
$default:
builders:
freezed:freezed:
generate_for:
include:
- lib/models/**.dart
从长远来看,正确地设置这一点可以为你节省大量的时间。👍
额外提示
你可以使用一个后缀,如*.codegen.dart ,用于所有需要由build_runner 处理的文件,并像这样更新build.yaml 。
targets:
$default:
builders:
freezed:freezed:
generate_for:
include:
- lib/**.codegen.dart
这样你就可以把文件放在项目中任何你想放的地方。
这个提示的灵感来自于Twitter上的这个主题。
编码愉快!