如何在Flutter的类中具有Timestamp字段的类中“ flutter pub run build_runner build”?

问题描述 投票:0回答:1

我正在尝试使用cmd“ flutter pub run build_runner build”来序列化来自对象的JSON格式,但它会一直显示以下消息:

运行JsonSerializableGenerator时出错无法为fromJson生成timeTaking代码。提供的TypeHelper实例都不支持定义的类型。

@JsonSerializable(explicitToJson: true)
class RequestData {
  @JsonKey(required: true)
  String uid;
  String phone;
  String email;
  String description;
  /// Tell json_serializable that "owner_name" should be
  /// mapped to this property.
  @JsonKey(name: 'owner-name')
  String ownerName;
  @JsonKey(name: 'location-detail')
  String locationDetail;
  int status;// 0 waiting, 1 accepted, 2 done, 3 DOING , 4 cancel
  List<String> imageUrls;
  @JsonKey( required: true, name: "time-taking", toJson: _timestampToJson/*,fromJson: _timeStampFromJson*/)
  Timestamp timeTaking;

  RequestData({this.uid, this.phone, this.email, this.description,
      this.ownerName, this.locationDetail, this.status, this.imageUrls,this.timeTaking});

  RequestData.none();
}

我该如何解决这个问题?

firebase flutter dart timestamp
1个回答
1
投票

我有同样的问题,我的临时解决方案是创建一个JsonConverter转换为DateTime:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:json_annotation/json_annotation.dart';

class TimestampConvertDatetime  implements JsonConverter<DateTime, Timestamp> {
  const TimestampConvertDatetime();
  @override
  DateTime fromJson(Timestamp json) {
    return json.toDate();
  }

  @override
  Timestamp toJson(DateTime object) {
    return Timestamp.fromDate(object);
  }
}

并应用于您的模型:

...
@TimestampConvertDatetime()
DateTime date;
....
© www.soinside.com 2019 - 2024. All rights reserved.