# #firebase #flutter #dart #google-cloud-firestore
Вопрос:
Я новичок в флаттере. Я хочу получить конкретный документ из firestore, используя его uid, а затем перенести этот документ в тип значения, с которым я могу справиться. НО при запуске приложения я получаю точку останова : Ошибка состояния (Плохое состояние: поле не существует в форме DocumentSnapshotPlatform). Это код:
final cloth = await DatabaseService(uid: uid) .clothCollection .doc(uid) .get() .then((doc) =gt; { Cloth( brand: doc.get('brand'), name: doc.get('name'), color: doc.get('color'), url: doc.get('url')) });
и Ткань :
class Cloth { final String? name; final String? url; final String? brand; final String? color; Cloth({this.name, this.brand, this.color, this.url}); }
Если есть более простой способ получить этот документ, дайте мне знать. Спасибо за вашу помощь!
Комментарии:
1. Вероятно, у doc нет функций. get ().
Ответ №1:
get
Атрибут не существует в DocumentSnapshot
(doc). Вместо этого вы должны использовать data()
метод , который возвращает a Maplt;String, dynamicgt;
или null, если документ не существует. Рекомендуется всегда проверять, существует ли документ, прежде чем выполнять дальнейшие действия.
final cloth = await DatabaseService(uid: uid) .clothCollection .doc(uid) .get() .then((doc) { if (doc.exists) { Maplt;String, dynamicgt;? data = doc.data(); return Cloth( brand: data?['brand'], name: data?['name'], color: data?['color'], url: data?['url']); } else { print('Document does not exist.'); } });