# #list #firebase #flutter #arraylist #google-cloud-firestore
Вопрос:
Я новичок в Flutter и пытаюсь создать приложение с облачным firestore в качестве бэкенда.
У меня есть список элементов в базе данных, которые отображаются на экране, пользователь выбирает нужные ему элементы.
А затем я хочу отобразить все списки, которые у меня есть, и добавить элементы из списка, выбранного пользователем. (например, если пользователь выбрал [«дерево», «небо», «цветок», «таблица»], и в базе данных у меня есть [«дерево»,»цветок»] и [«дерево»,»небо»,»цветок»,»таблица»] Я хочу их отобразить).
Я попробовал использовать arrayContainsAny, но он также показывает мне списки, содержащие другие элементы, такие как [«дерево», «небо», «оранжевый»].
Есть ли какой-нибудь способ сделать это ?
ЭДИТ :
если выбран список пользователей : [«дерево»,»оранжевый»,»небо»,»цветок»]
и в моей базе данных у меня есть эти массивы: [«цветок», «небо»], [«дерево»,»оранжевый»,»небо»,»цветок»] и [«небо»,»оранжевый»,»компьютер»]
тогда я хочу отобразить только 2 первых массива ([«цветок», «небо»] и [«дерево», «оранжевый», «небо», «цветок»]), а не последний, потому что «компьютер» отсутствует в списке пользователей
и проблема с arrayContains в том, что он отображает 3 списка, а это не то, что я хочу.
Спасибо
Комментарии:
1. То, что вы описываете, звучит как пример использования
arrayContainsAny
. Можете ли вы отредактировать свой вопрос, чтобы показать, что вы пытались сделать с этим предложением и какие неправильные результаты оно дало?2. @FrankvanPuffelen, arrayContainsAny возвращает вещи, которые мне не нужны, я отредактировал свой вопрос, чтобы вы могли увидеть пример того, что я получил, используя его.
Ответ №1:
Попробуйте Этот Метод. когда вы получите все элементы из массива firestore, назначьте их списку и используйте его везде, где захотите.
List<String> myList = [];
getdata() async{
await Firestore.instance.collection("points").document('biZV7cepFJA8T6FTcF08').get().then((value){
setState(() {
// first add the data to the Offset object
List.from(value.data['point']).forEach((myitems){
myList.add(myitems);
});
});
});
}
Ответ №2:
После того, как Firebase вернет ваши результаты. Вы можете быть уверены, что эти элементы существуют в вашей базе данных, и когда вы получите их обратно, даже если у них есть дополнительные элементы, отфильтруйте их на основе ввода пользователей. Таким образом, вы можете быть уверены, что пользователи не будут фильтровать элементы, которых нет или которые вы не предоставляете. На шаге 2 выполните второй фильтр локально, сравнив списки. Это не будет сильно обременительно для вашего приложения, и оно будет работать синхронно.