Flutter 2.0 Firestore: Оператор ‘[]’ не определен для класса ‘Объект?’

# #flutter #dart #google-cloud-firestore

Вопрос:

У меня есть приведенный ниже код для получения данных из firestore.

       return ListView(
          shrinkWrap: true,
          children: snapshot.data!.docs.map((doc) {
            print(doc.data());
            return Card(
              child: ListTile(
                title: Text(doc.data()["description"]),
              ),
            );
          }).toList(),
        );
 

Но я получил ошибку ниже:

Ошибка: Оператор «[] «не определен для класса» Объект?».

  • «Объект» происходит от «dart:ядро». Попробуйте исправить оператор на существующий оператор или определить оператор» []». название: Текст(док.данные()[«описание»]),

Любая помощь будет признательна.

Ответ №1:

data() Функция теперь возвращает Object? , что означает, что вы должны привести ее к Map<String, dynamic> моменту сейчас.

       return ListView(
          shrinkWrap: true,
          children: snapshot.data!.docs.map((doc) {
            final data = doc.data()! as Map<String, dynamic>;
            print(data);
            return Card(
              child: ListTile(
                title: Text(data["description"]),
              ),
            );
          }).toList(),
        );
 

Ответ №2:

  return ListView(
          shrinkWrap: true,
          children: snapshot.data!.docs.map((doc) {
          Map allData = doc.data();
           // print(doc.data());
            return Card(
              child: ListTile(
                title: Text(allData["description"]),
              ),
            );
          }).toList(),
        );