Класс QuerySnapshot не имеет экземпляра получателя doc
Мне нужна твоя помощь. Вот сценарий, который я пытаюсь реализовать.
- Пользователь регистрируется в приложении
- После успешной регистрации пользователя ему необходимо связать себя с агентством. Новый пользователь попадает на страницу агентства. На странице есть 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):
Я читал много сообщений и следил за тем, что они говорят, но не могу заставить это работать.