【发布时间】:2022-08-06 14:16:17
【问题描述】:
我有一个类,我试图将它与 Freezed、Json Serializable 和 Hive 一起使用。运行dart run build_runner build 并生成必要的类后,我的编译器给了我以下错误:
: Error: Can\'t use \'_$FooBarFromJson\' because it is declared more than once.
和
: Error: \'_$FooBarFromJson\' is already declared in this scope.
part \'foobar.freezed.dart\';
part \'foobar.g.dart\';
@freezed
@JsonSerializable(explicitToJson: true)
@HiveType(typeId: 0)
class FooBar extends HiveObject with _$FooBar {
factory FooBar({
@HiveField(0) required int baz
}) = _FooBar;
factory FooBar.fromJson(Map<String, dynamic> json) =>
_$FooBarFromJson(json);
}
}
查看生成的类后,我的foobar.g.dart 文件包含以下方法:
FooBar _$FooBarFromJson(Map<String, dynamic> json) => FooBar(
baz: json[\'baz\'] as int,
);
Map<String, dynamic> _$FooBarToJson(FooBar instance) =>
<String, dynamic>{
\'baz\': instance.baz,
};
_$_FooBar _$$_FooBarFromJson(Map<String, dynamic> json) =>
_$_FooBar(
baz: json[\'baz\'] as int,
);
Map<String, dynamic> _$$_FooBarToJson(_$_FooBar instance) =>
<String, dynamic>{
\'baz\': instance.baz,
};
而我的foobar.freezed.dart 包含这个方法:
FooBar _$FooBarFromJson(Map<String, dynamic> json) {
return _FooBar.fromJson(json);
}
我注意到其他被转换的文件在foobar.g.dart 中只有带有_$$_ 前缀的方法,而_$FooBarFromJson 是在foobar.freezed.dart 和foobar.g.dart 中创建的,这是错误的原因.我在这里想念什么?
标签: flutter hive freezed json-serializable