Класс QuerySnapshot не имеет экземпляра получателя doc

Мне нужна твоя помощь. Вот сценарий, который я пытаюсь реализовать.

  1. Пользователь регистрируется в приложении
  2. После успешной регистрации пользователя ему необходимо связать себя с агентством. Новый пользователь попадает на страницу агентства. На странице есть DropdownButton, в котором отображаются существующие агентства. Этот DropdownButton заполняется из документа Firestore.

Я могу получить данные из документа с помощью Stream, но не могу заставить их заполнить DropdownButton.

        final _db = FirebaseFirestore.instance;

 body: SafeArea(
        child: SingleChildScrollView(
          child: Column(
Container(
                  child: StreamBuilder(
                    
                      stream: _db.collection('agency').snapshots(),
                      builder: (BuildContext context, AsyncSnapshot snapshot) {
                        if (!snapshot.hasData) {
                          return Center(
                            child: CircularProgressIndicator(),
                          );
                        } else {
                          var length = snapshot.data.doc.length;
                          print('length: ' + length);

                          return new DropdownButton<String>(
                            hint: new Text("Select Agency"),
                            value: _currentAgency,
                     
                            items: snapshot.data.doc.map((Map map) {
                              return new DropdownMenuItem<String>(
                                value: map["name"].toString(),
                                child: new Text(
                                  map["name"],
                                ),
                              );
                            }).toList(),
                          );
                        }
                        ;
                      }),
                ),

В журнале появляется следующая ошибка

======== Исключение, обнаруженное библиотекой виджетов ===================================== ================== При построении StreamBuilder возникла следующая ошибка NoSuchMethodError (грязная, состояние: _StreamBuilderBaseState <QuerySnapshot, AsyncSnapshot>#4fe22): класс QuerySnapshot не имеет документа для получения экземпляра. '. Получатель: экземпляр QuerySnapshot. Попытка вызвать: doc

Соответствующий виджет, вызывающий ошибку, был: StreamBuilder file: /// C:/Users/nkane/AndroidStudioProjects/tonnah/lib/screens/agency_screen.dart:190:26 Когда было создано исключение, это был стек: #0 Object.noSuchMethod (dart:core-patch / object_patch.dart:54:5)#1 _AgencyScreenState.build. (пакет: tonnah / screen / agency_screen.dart:199:54)#2 StreamBuilder.build (пакет: flutter / src / widgets / async.dart:545:81)#3 _StreamBuilderBaseState.build (пакет: flutter / src / widgets /async.dart:124:48)#4 StatefulElement.build (пакет: flutter / src / widgets / framework.dart: 4612:27)...

E / flutter (13608): [ОШИБКА: flutter / lib / ui / ui_dart_state.cc(186)] Необработанное исключение: NoSuchMethodError: метод '[]' был вызван с нулевым значением. E / flutter (13608): Получатель: null E / flutter (13608): Пробный вызов: E / flutter (13608): #0 Object.noSuchMethod (dart:core-patch / object_patch.dart:54:5)E / flutter (13608): #1 _AgencyScreenState.getCurrentAgencyProfile (пакет: tonnah / screen / agency_screen.dart:96:62)E / flutter (13608): E / flutter (13608):

Я читал много сообщений и следил за тем, что они говорят, но не могу заставить это работать.

0 ответов

Другие вопросы по тегам