【发布时间】:2023-04-02 17:48:01
【问题描述】:
使用下面显示的代码,我在此行收到错误(此行位于以下完整代码 sn-p 的底部):
address: data['address'] ??
我可以理解这可能意味着什么或导致什么。有人有想法吗?
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:equatable/equatable.dart';
import 'package:keekz_mvp/config/paths.dart';
import 'package:meta/meta.dart';
import 'package:keekz_mvp/models/models.dart';
class Keekz extends Equatable {
final String id;
final User author;
final String imageUrl;
final String caption;
final int likes;
final DateTime date;
final GeoPoint location;
final Map<String, String> address;
const Keekz({
this.id,
@required this.author,
@required this.imageUrl,
@required this.caption,
@required this.likes,
@required this.date,
@required this.location,
@required this.address,
});
@override
List<Object> get props => [
id,
author,
imageUrl,
caption,
likes,
date,
location,
address,
];
Keekz copyWith({
String id,
User author,
String imageUrl,
String caption,
int likes,
DateTime date,
GeoPoint location,
Map<String, String> address,
}) {
return Keekz(
id: id ?? this.id,
author: author ?? this.author,
imageUrl: imageUrl ?? this.imageUrl,
caption: caption ?? this.caption,
likes: likes ?? this.likes,
date: date ?? this.date,
location: location ?? this.location,
address: address ?? this.address,
);
}
Map<String, dynamic> toDocument() {
return {
'author':
FirebaseFirestore.instance.collection(Paths.users).doc(author.id),
'imageUrl': imageUrl,
'caption': caption,
'likes': likes,
'date': Timestamp.fromDate(date),
'location': location,
'address': address,
};
}
static Future<Keekz> fromDocument(DocumentSnapshot doc) async {
if (doc == null) return null;
final data = doc.data();
final authorRef = data['author'] as DocumentReference;
if (authorRef != null) {
final authorDoc = await authorRef.get();
if (authorDoc.exists) {
return Keekz(
id: doc.id,
author: User.fromDocument(authorDoc),
imageUrl: data['imageUrl'] ?? '',
caption: data['caption'] ?? '',
likes: (data['likes'] ?? 0).toInt(),
date: (data['date'] as Timestamp)?.toDate(),
location: data['location'] ?? GeoPoint(0, 0),
address: data['address'] ??
{
'city': 'not set',
'postalcode': 'not set',
'country': 'not set'
},
);
}
}
return null;
}
}
【问题讨论】:
标签: json firebase flutter dart google-cloud-firestore