首页 > 解决方案 > 使用 build_runner 在子模块中构建 JsonSerializable 模型

问题描述

我有一个带有子模块的 Flutter 项目:

- root Flutter project
  - Flutter module 1
  - Flutter module 2
  ...
  - Flutter module N

每个模块都包含用 注释的类@JsonSerializable()

目前我用这个脚本构建模型:

for dir in [DIR_LIST]
do
  echo "Building models in ${dir}"
  cd ${BASE_DIR}/${dir}
  flutter packages pub run build_runner build --delete-conflicting-outputs
done

有没有办法在我的项目中使用根目录中的单个命令构建每个子模块,而不是循环每个目录?

标签: flutterdart

解决方案


在您的 build.yaml 文件中

  1. 指定模块的来源

  2. 将它们添加到 generate_for 块中

     targets:
      $default:
        builders:
         json_serializable|json_serializable:
           generate_for:
             - "modules/data_module/**.dart"
       sources:
         - "lib/**"
         - "test/**"
         - "modules/data_module/**"
    

推荐阅读