# #firebase #flutter #dart #google-cloud-firestore
Вопрос:
Я пытаюсь создать список строк, содержащих массив из firebase . И это прекрасно работает. Но теперь я хочу немного отфильтровать список . Поэтому я хочу добавить все теги один раз . Поэтому, если хэштеги существуют дважды, я хочу просто один раз включить их в список. Вот мой код
Future<List<String>> getHashtags() async {
List<String> allVideoHastags = [];
QuerySnapshot snapshots =
await FirebaseFirestore.instance.collection('videos').get();
for (QueryDocumentSnapshot videoSnapshot in snapshots.docs) {
List<String> videoHastags =
List.from(videoSnapshot.data()['Hashtagsforallvideos']);
allVideoHastags.addAll(videoHastags);
}
_allResults = allVideoHastags;
searchResults();
return allVideoHastags;
}
Поэтому ,прежде чем добавлять хэштеги в список, я хочу проверить, существует ли он уже в списке строк .Надеюсь, кто-нибудь сможет помочь .Если вам нужна дополнительная информация, пожалуйста, оставьте комментарий
Комментарии:
1. Это не ответ на конкретный вопрос, но вы, возможно, захотите рассмотреть возможность использования объединения массивов для хранения хэштегов, что предотвратит хранение дубликатов. Видишь firebase.google.com/docs/firestore/manage-data/…
Ответ №1:
Просто просмотрите хэштеги, которые вы получаете от firebase, и добавьте их в свои результаты, только если их там еще нет, как это:
Future<List<String>> getHashtags() async {
List<String> allVideoHastags = [];
QuerySnapshot snapshots =
await FirebaseFirestore.instance.collection('videos').get();
for (QueryDocumentSnapshot videoSnapshot in snapshots.docs) {
List<String> videoHastags =
List.from(videoSnapshot.data()['Hashtagsforallvideos']);
videoHastags.forEach((element) {
if(!allVideoHastags.contains(element)){
allVideoHastags.add(element);
}
});
}
_allResults = allVideoHastags;
searchResults();
return allVideoHastags;
}
Ответ №2:
Это позволит удалить все дубликаты из списка
_allResults = allVideoHastags.toSet().toList();
Ответ №3:
YOUR_LIST.forEach((element) => if(element == "YOUR_STRING") {YOUR_NEW_LIST.add(element )});