在我的应用程序中,我使用带有json_serializable的freezed。在我放置所有数据模型的文件夹中,有许多生成的文件,如model.g.dart
、model.freeezed.dart
。是否有可能将所有生成的类似文件移动到项目中的单独文件夹中,如generated
?
根据build_runner文档
flutter pub run build_runner build --output <dirname>
或
flutter pub run build_runner build --output models:<directory name>
只输出型号目录
下面是stackoverlow的工作示例:
基本上创建这样的build.yaml文件,它将在generated
文件夹中生成文件:
targets:
$default:
builders:
source_gen|combining_builder:
generate_for:
- lib/**.dart
options:
build_extensions:
'^lib/{{}}.dart': 'lib/generated/{{}}.g.dart'
freezed|freezed:
enabled: true
options:
build_extensions:
'^lib/{{}}.dart': 'lib/generated/{{}}.freezed.dart'
不要忘记将generated
添加到part
。
import 'package:freezed_annotation/freezed_annotation.dart';
part 'generated/person.g.dart';
part 'generated/person.freezed.dart';
@freezed
class Person with _$Person {
const factory Person({
required String firstName,
required String lastName,
required int age,
}) = _Person;
factory Person.fromJson(Map<String, Object?> json)
=> _$PersonFromJson(json);
}