#flutter #dart
Вопрос:
Я получаю данные из firestore вот так
CollectionReference _collectionRef =
FirebaseFirestore.instance.collection('Users');
QuerySnapshot querySnapshot = await _collectionRef.get();
// Get data from docs and convert map to List
final allData =
querySnapshot.docs.map((doc) => doc.data()).toList();
print(allData);
его данные для печати в формате списка, таком как этот
I/flutter (13500): [{number: 123131, shopname: ishaq shop, id: here i need doc id , lastupdate: , sendQty: }, {number: 1231231, shopname: ishaq shop, lastupdate: , id: gXVR4Sp3Cm3pii97Gh00, sendQty: }, {number: 123131, shopname: ishaq shop, lastupdate: , id: AM8KL6SxvFkCRQqpTjre, sendQty: }]
Я просто хочу получить номер из списка. Я пытаюсь что-то вроде
print(allData['number']);
print(allData.number);
но не работает на меня
Ответ №1:
Попробуй это. Если это сработает, вы можете повторить это в своем списке. Вы конвертируете свои данные в список здесь, а затем пытаетесь позвонить, как на карте. Причина, по которой это неправильно. и замените финал списком. Это прекрасно работает
List allData =
querySnapshot.docs.map((doc) => doc.data()).toList()
Попробуй
print(allData[0]['number']);
Комментарии:
1. уже попробуйте это, чтобы попытаться исправить оператор на существующий оператор или определить оператор» []».
2. Также вам нужно заменить конечный параметр во всех данных списком. Я отредактировал, теперь все работает нормально
Ответ №2:
allData
является a List<Map<String, dynamic>>
, это означает список карт (карта: также называется словарем на java/swift и других языках).
Чтобы получить доступ к одной переменной, вам сначала нужен индекс словаря, а затем используйте ключ для доступа к нему.
var number = allData.first['number'];
print(number);
Прямо здесь я печатаю первый элемент списка, но вы можете получить доступ к любому нужному элементу, если у вас есть его индекс.