![](/img/trans.png)
[英]how can I get name of document inside collection with firestorage firebase?
[英]How can I get a document snapshot of firebase collection?
我試圖讓用戶從 firebase 集合中搜索主題標簽。 但我有點掙扎這是我如何嘗試獲取文檔的快照
class Videos {
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.commentcount, this.hashtag1, this.hashtag2, this.hashtag3, this.likes, this.previewimage, this.profilepic, this.sharecount, this.uid, this.videourl, this.categorie, this.username});
}
var videoscollection =
FirebaseFirestore.instance.collection('videos');
Videos videosfromsnapshot(DocumentSnapshot snapshot){
return Videos(
categorie:snapshot.data()['categorie'],
commentcount:snapshot.data()['commentcount'],
hashtag1:snapshot.data()['hashtag1'],
hashtag2:snapshot.data()['hashtag2'],
hashtag3:snapshot.data()['hashtag3'],
likes:snapshot.data()['likes'],
previewimage:snapshot.data()['previewimage'],
profilepic:snapshot.data()['profilepic'],
sharecount:snapshot.data()['sharecount'],
uid:snapshot.data()['uid'],
username:snapshot.data()['username'],
videourl:snapshot.data()['videourl'],
);
}
Stream<Videos> get provideDocumentFieldStream {
return videoscollection.doc().snapshots().map(videosfromsnapshot);
}
然后我試圖在這里使用它
searchResults() {
var showResults = [];
if (widget.searchinginput.text != "") {
for (var tripsnapshot in _allResults) {
var title = DatbaseService.instance
.videosfromsnapshot(tripsnapshot)
.hashtag1
.toLowerCase();
print(title);
var title2 = DatbaseService.instance
.videosfromsnapshot(tripsnapshot)
.hashtag3
.toLowerCase();
print(title);
var title3 = DatbaseService.instance
.videosfromsnapshot(tripsnapshot)
.hashtag2
.toLowerCase();
print(title);
if (title.contains(widget.searchinginput.text.toLowerCase()) ||
title2.contains(widget.searchinginput.text.toLowerCase()) ||
title3.contains(widget.searchinginput.text.toLowerCase())) {
setState(() {
nosuerfound = true;
});
showResults.add(tripsnapshot);
}
}
} else {
setState(() {
nosuerfound = true;
});
showResults = List.from(_allResults);
}
setState(() {
_resultsList = showResults;
});
}
getusers() async {
var firestore = FirebaseFirestore.instance;
QuerySnapshot qn = await firestore.collection('videos').get();
setState(() {
_allResults = qn.docs;
});
searchResults();
return "Complete";
}
所以我嘗試的是用戶搜索主題標簽,每個視頻都有 3 個主題標簽,當用戶輸入一個主題標簽時,我想顯示視頻的 3 個主題標簽,但它不起作用我認為文檔快照應該有問題。 這是我的 firebase
這是它拋出的地方
class Openmyprofil extends StatefulWidget {
final TextEditingController searchinginput;
const Openmyprofil({Key key, this.searchinginput}) : super(key: key);
@override
_OpenmyprofilState createState() => _OpenmyprofilState();
}
class _OpenmyprofilState extends State<Openmyprofil> {
List _allResults = [];
List _resultsList = [];
Future resultsLoaded;
bool nosuerfound = false;
var titles;
@override
void initState() {
super.initState();
widget.searchinginput.addListener(_onsearchChanged);
widget.searchinginput.text;
setState(() {
nosuerfound = true;
});
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
resultsLoaded = getusers();
}
_onsearchChanged() {
setState(() {
nosuerfound = false;
});
searchResults();
}
searchResults() {
var showResults = [];
if (widget.searchinginput.text != "") {
for (var tripsnapshot in _allResults) {
titles = tripsnapshot;
var title = DatbaseService.instance
.userDataFromSnapshot(tripsnapshot)
.username
.toLowerCase();
if (title.contains(widget.searchinginput.text.toLowerCase())) {
setState(() {
nosuerfound = true;
});
showResults.add(tripsnapshot);
print(tripsnapshot);
}
}
} else {
setState(() {
nosuerfound = true;
});
showResults = List.from(_allResults);
}
setState(() {
_resultsList = showResults;
});
}
getusers() async {
var firestore = FirebaseFirestore.instance;
QuerySnapshot qn = await firestore.collection('meinprofilsettings').get();
setState(() {
_allResults = qn.docs;
});
searchResults();
return "Complete";
}
根據您的評論,首先要做的是更改:
commentcount:snapshot.data()['commentcount'],
對此:
commentcount:snapshot.data()['commentcount'].toString(),
這導致您的錯誤int is not a subtype of string
,因為 firebase 中的評論計數是基於您發布的圖片的int
。 消除此錯誤,然后我們繼續進行,如果其他一切都正確解決,它甚至可以解決您的問題。
對shareCount
做同樣的事情
sharecount:snapshot.data()['sharecount'].toString()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.