在我的应用程序中,我使用 freezed 和 json_serializable。在我放置所有数据模型的文件夹中,有很多生成的文件,如
model.g.dart
、model.freeezed.dart
。是否有可能将所有生成的文件移动到项目中的单独文件夹中,如generated
?
flutter pub run build_runner build --output <dirname>
或
flutter pub run build_runner build --output models:<directory name>
只输出models目录
这是 stackoveflow 的工作示例:
基本上像这样创建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);
}