Плохое состояние: поле не существует в форме DocumentSnapshotPlatform. Флаттер и огневая база

# #firebase #flutter #google-cloud-firestore

Вопрос:

Я пытаюсь создать список из коллекции из базы данных firebase, но у меня возникла проблема со снимками построителя потоков.

 StreamBuilder<QuerySnapshot>(
          stream: FirebaseFirestore.instance.collection("users").snapshots().where((event) => true),
          builder: (context, snapshot) {
            if (snapshot.hasData amp;amp; snapshot.data != null) {
              return ListView.builder(
                itemBuilder: (listContext, index) =>
                    buildItem(snapshot.data.docs[index]),
                itemCount: snapshot.data.docs.length,
              );
            }

            return Container();
          },
        ));
  }

  buildItem(doc) {
    return (userId != doc['id'])
        ? GestureDetector(
      onTap: () {
        //Navigator.push(context, MaterialPageRoute(builder: (context) => Page(docs: doc)));
      },
      child: Card(
        color: Colors.black,
        child: Container(
          height: 60,
          child: Center(
            child: Text(doc['name'],
              style: TextStyle(
                color: Colors.white,
                fontSize: 20,
              ),
            ),
          ),
        ),
      ),
    )
        : Container();
  }
 

Вот в чем вся ошибка:

 ======== Exception caught by widgets library =======================================================
The following StateError was thrown building:
Bad state: field does not exist within the DocumentSnapshotPlatform

When the exception was thrown, this was the stack: 
#0      DocumentSnapshotPlatform.get._findKeyValueInMap (package:cloud_firestore_platform_interface/src/platform_interface/platform_interface_document_snapshot.dart:86:7)
#1      DocumentSnapshotPlatform.get._findComponent (package:cloud_firestore_platform_interface/src/platform_interface/platform_interface_document_snapshot.dart:104:41)
#2      DocumentSnapshotPlatform.get (package:cloud_firestore_platform_interface/src/platform_interface/platform_interface_document_snapshot.dart:120:26)
#3      _JsonDocumentSnapshot.get (package:cloud_firestore/src/document_snapshot.dart:92:48)
#4      _JsonDocumentSnapshot.[] (package:cloud_firestore/src/document_snapshot.dart:96:40)
...
====================================================================================================
 

Конструктор создает список, но прямо под ним отображается красный раздел с ошибкой.

Ответ №1:

doc В вашем buildItem методе есть DocumentSnapshot объект, который [] , насколько я знаю, не определен.

Я думаю, ты пропускаешь звонок в data() :

 userId != doc.data()['id']
 

Если вы получите еще одно сообщение об ошибке после этого изменения, пожалуйста, сначала найдите его в переполнении стека, так как я знаю, что в последнее время произошли некоторые изменения в том, как типы отображаются из моментального снимка документа.

Комментарии:

1. Большое вам спасибо, что это было именно так.