# #firebase #flutter #google-cloud-firestore
Вопрос:
я пытаюсь получить данные из документа firebase и заполнить их списком. Получите данные из работы с документами firebase. Список заполнен. Но если я заполню более одного списка, то список будет другим.
Вот мой список в коде visual studio:
- Список:
I/flutter ( 5143): list: {eco_shipping: false, fairtrade: false, business_status: private, sub_category: null, status_color: 0, description: D, adress: A, delivery_time: 0, stars: 0, title: T, sell_status: search, eco: false, hashTags: [], user_id: YpPfU7cyAzLrS2sOtsRn4fXPIvV2, price: 0,02 €, main_category: Electronics, id: id_1631823807583_YpPfU7cyAzLrS2sOtsRn4fXPIvV2, create_date: Timestamp(seconds=1631823807, nanoseconds=0)}
- Список:
I/flutter ( 5143): list: {eco_shipping: false, business_status: private, fairtrade: false, sub_category: null, status_color: 0, description: D, adress: A, stars: 0, delivery_time: 0, title: T, sell_status: search, eco: false, hashTags: [], user_id: YpPfU7cyAzLrS2sOtsRn4fXPIvV2, price: 0,02 €, main_category: Electronics, id: id_1631824342677_YpPfU7cyAzLrS2sOtsRn4fXPIvV2, create_date: Timestamp(seconds=1631824342, nanoseconds=0)
моя проблема:
Я бы заполнил список одним объектом.
Объект:
ProductDataObject(
eco_shipping: list.entries.elementAt(0).value,
fairtrade: list.entries.elementAt(1).value,
business_status: list.entries.elementAt(2).value,
sub_category: list.entries.elementAt(3).value,
status_color: list.entries.elementAt(4).value,
description: list.entries.elementAt(5).value,
adress: list.entries.elementAt(6).value,
stars: list.entries.elementAt(7).value,
delivery_time: list.entries.elementAt(8).value,
title: list.entries.elementAt(9).value,
sell_status: list.entries.elementAt(10).value,
eco: list.entries.elementAt(11).value,
hashTag: list.entries.elementAt(12).value,
user_id: list.entries.elementAt(13).value,
price: list.entries.elementAt(14).value,
main_category: list.entries.elementAt(15).value,
product_id: list.entries.elementAt(16).value,
create_date: list.entries.elementAt(17).value,
image_url: [lst_image_url],
),
Но для этого мне всегда нужна одна и та же серия списков.
Например:
- eco_shipping
- честная торговля
- бизнес_статус
- подкатегория …
Примеры списков не равны. Записи fairtrade и business_status не находятся в одном и том же индексе в моем списке.
Мой вопрос: Как я могу указать в списке последовательность исправлений (для записей)? Много раз.
Ответ №1:
Определите эту функцию в своей ProductDataObject
модели
_productDatafromJson(Map<String, dynamic> json) {
// I tried to infer your properties types from the data you gave, so
// feel free to correct any type.
return ProductDataObject(
eco_shipping: json['eco_shipping'] as bool,
fairtrade: json['fairtrade'] as bool,
business_status: json['business_status'] as String,
sub_category: json['sub_category'] as bool,
status_color: json['status_color'] as int,
description: json['description'] as String,
adress: json['adress'] as String,
stars: json['stars'] as int,
delivery_time: json['delivery_time'] as String,
title: json['title'] as String,
sell_status: json['sell_status'] as String,
eco: json['eco'] as bool,
hashTag: (json['hashTag'] as List)?.map((e) => e as String)?.toList(),
user_id: json['user_id'] as String,
price: json['price'] as String,
main_category: json['main_category'] as String,
product_id: json['product_id'] as bool,
// create_date type will be DateTime
create_date: (json['create_date'] as Timestamp)?.toDate(),
image_url: (json['image_url'] as List)?.map((e) => e as String)?.toList(),
);
}
Тогда назови это так:
// for single ProductDataObject, use this
ProductDataObject data = _productDatafromJson(list);
print(data);
// for multiple ProductDataObject, use this:
List<Map<String, dynamic>> list;
// here list is a List of Map<String, dynamic>. It is not a single Map<String, dynamic>
List<ProductDataObject> data = list.map((e) => _productDatafromJson(e)).toList();
print(data);
Комментарии:
1. Привет, Питер, спасибо за твой ответ. Ты мне очень помогаешь. Теперь это работа. Вот мое решение «eco_shipping: список.записей .где((элемент) => элемент.ключ = = «eco_shipping»). карта((e) =>> e.значение) .Элемент(0),». Многие thx (:
2. Так рад, что смог помочь.