【发布时间】:2021-05-09 08:26:37
【问题描述】:
我正在尝试使用json_serializable:。
我的 pubspec.yaml
dependencies:
json_annotation: 3.1.1
dev_dependencies:
build_runner:
json_serializable: 3.5.1
我来自 Firestore 的信息流
static Stream<DocumentSnapshot<Object>> getOrderById(String docId) {
return database().collection('orders').doc(docId).snapshots();
}
我在 order.dart 的工厂
factory Order.fromJson(Map<String, dynamic> json) => _$OrderFromJson(json);
order.g.dart
Order _$OrderFromJson(Map<String, dynamic> json) {
return Order(
common: json['common'] == null
? null
: OrderCommon.fromJson(json['common'] as Map<String, dynamic>),
// goes like this
当我像这样调用这个方法时
Order doc = Order.fromJson(snapshot.data);
扔给我Expected a value of type 'Map<String, dynamic>', but got one of type '_JsonDocumentSnapshot'
但是当我添加另一个完全相同的工厂时,只是期望参数不同。
order.dart
factory Order.fromSnapshot(DocumentSnapshot json) {
return Order(
common: json['common'] == null
? null
: OrderCommon.fromJson(json['common'] as Map<String, dynamic>),
// goes like this but EXACTLY same with order.g.dart OrderFromJson
然后调用 当我像这样调用这个方法时
Order doc = Order.fromSnapshot(snapshot.data);
它按预期工作。我怎么了?任何意见表示赞赏。
【问题讨论】:
标签: flutter google-cloud-firestore json-serialization