我有一个冻结的类,看起来像这样:
@freezed
abstract class GiftGiver with _$GiftGiver {
const factory GiftGiver({
String? id,
String? uid,
String? imageUrl,
String? giftDetails,
String? listingDate,
@Default(5) int listingFor,
Timestamp? pickUpTime,
@Default(false) canLeaveOutside,
}) = _GiftGiver;
factory GiftGiver.fromJson(Map<String, dynamic> json) =>
_$GiftGiverFromJson(json);
}
冻结类生成良好,但.g.dart类没有生成,因为我有时间戳类型。我在www.example.com上看到了一些解决方案https://github.com/rrousselGit/freezed#fromjson---classes-with-multiple-constructors,但我不明白如何应用它来解决我的问题。
3条答案
按热度按时间tvmytwxo1#
也许您需要在
pubspec.yaml
文件的dev_dependencies
部分添加json_serializable
包。如果是这种情况,请删除
pubspeck.lock
文件,然后运行flutter pub get
命令再次生成pubspeck.lock
文件。然后,运行命令
flutter packages pub run build_runner build --delete-conflicting-outputs and fix
以生成.g
文件lh80um4z2#
经过一番研究,我找到了解决办法。对于JsonSerializable不支持的类型,我需要使用JsonKey创建自己的toJson和fromJson方法。我正在附加一个这样的类,它具有Timestamp,并且其中还有另一个嵌套类(MyPosition)。
GiftGiver类使用MyPosition(另一个Freezed类),看起来像这样=>
为了在GiftGiver中正确使用MyPosition,我需要创建**_toJson和_fromJson**,并告诉GiftGiver如何解码和编码MyPosition字段。
7eumitmz3#
要做到这一点,你需要:
和/或
如果没有弄错的话,您需要
json_serializable
来生成.g.dart
文件。当我添加它生成所需的文件。我认为这是用于
fromJson
工厂方法。