【发布时间】:2021-07-17 00:17:43
【问题描述】:
我试图从 firebase 获取 Array 作为 Flutter 的 Querysnaoshot,但我该怎么做? 这是代码
class Videos {
final String allhashtagsofeveryvideo;
final String categorie;
final String commentcount;
final String hashtag1;
final String hashtag2;
final String hashtag3;
final String likes;
final String previewimage;
final String profilepic;
final String sharecount;
final String uid;
final String username;
final String videourl;
Videos( {this.allhashtagsofeveryvideo,this.commentcount, this.hashtag1, this.hashtag2, this.hashtag3, this.likes, this.previewimage, this.profilepic, this.sharecount, this.uid, this.videourl, this.categorie, this.username});
}
Videos videosfromsnapshot(DocumentSnapshot snapshot) {
return Videos(
categorie: snapshot.data()['categorie'],
commentcount: snapshot.data()['commentcount'].toString(),
hashtag1: snapshot.data()['hashtag1'],
hashtag2: snapshot.data()['hashtag2'],
hashtag3: snapshot.data()['hashtag3'],
likes:snapshot.data()['likes'].length.toString(),
previewimage: snapshot.data()['previewimage'],
profilepic: snapshot.data()['profilepic'],
sharecount: snapshot.data()['sharecount'].toString(),
uid: snapshot.data()['uid'],
allhashtagsofeveryvideo:snapshot.data()['Hashtagsforallvideos'],
username: snapshot.data()['username'],
videourl: snapshot.data()['videourl'],
);
}
var firestore = FirebaseFirestore.instance;
List<QueryDocumentSnapshot> _allResults = [];
QuerySnapshot snapshots = await firestore.collection('videos').get();
for (var doc in snapshots.docs) {
_allResults.addAll(doc.data()["Hashtagsforallvideos"]);
也许我应该映射它或类似的东西? 所以不要像你看到的那样添加它,我想那样使用
QuerySnapshot snapshots = await firestore.collection('videos').get();
for (var doc in snapshots.docs) {
....
_allResults= qn.docs
但是我该怎么做也许有人可以提供帮助 我没有收到此错误
[VERBOSE-2:ui_dart_state.cc(186)] Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'QueryDocumentSnapshot'
#0 _OpenallsinglehashtagsState.getusers
package:wichtigdenyady/homesearchingall/openalldocs.dart:90
<asynchronous suspension>
这一行就是这一行
_allResults.addAll(doc.data()["Hashtagsforallvideos"]);
大概是这样的
var firestore = FirebaseFirestore.instance;
QuerySnapshot qn = await firestore.collection('videos').get();
if (!mounted) return;
setState(() {
_allResults = qn.docs;
});
【问题讨论】:
-
据我所知,您的
snapshots是QuerySnapshot。有什么不好的? -
好吧,坦率地说,我可能遇到了问题,问题是 data() 是动态的,因为我收到了这个错误 [VERBOSE-2:ui_dart_state.cc(186)] 未处理的异常:类型 'List' 不是 'QueryDocumentSnapshot' 类型的子类型。请检查我的代码,这样你就可以看到错误发生在哪里,也许你现在有任何解决方案。
标签: arrays firebase flutter dart google-cloud-firestore