Я пытаюсь получить значения из своей базы данных Firestore. Я использую FutureBuilder для создания виджета, которому требуются эти значения. Следующие коды вызывают у меня ошибки:
FutureBuilder(
future: Firestore.instance.collection('Users').document(_uid).get(),
builder: (BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {
if (snapshot.hasData) {
if (snapshot.data != null) {
print(snapshot.data["firstName"]); //error occurs here
}
} else {
return new CircularProgressIndicator();
}
},
)
Ошибка выглядит следующим образом:
NoSuchMethodError: The method '[]' was called on null.
Receiver: null
Tried calling: []("firstName")
Так или иначе, моментальный снимок документа все еще является нулевым даже после нулевых проверок. Есть идеи, почему? Еще более странно: код действительно работает при горячей перезагрузке. Однако, когда я переключаюсь на эту страницу в своем приложении, эта ошибка появляется снова. Я попытался реализовать try-catch, который возвращает CircularProgressIndicator, однако страница просто остается постоянным CircularProgressIndicator при обнаружении ошибки. Думаю, это можно решить, если я поймаю ошибку и перезагружу FutureBuilder. Либо так, либо если бы я мог разгадать загадку, почему моментальный снимок документа является нулевым даже после нулевых проверок.
* Обновлено: я обнаружил проблему: _uid вызывает у меня проблемы. Когда я жестко кодирую _uid, он работает хорошо. Таким образом, проблема заключается в том, как я получаю свой _uid в начале страницы. Вот как я получаю свой _uid, написанный прямо над моими кодами сборки:
void initState() {
super.initState();
// Listen for our auth event (on reload or start)
// Assign variables once logged in
_auth.onAuthStateChanged
.firstWhere((user) => user != null)
.then((user) {
_uid = user.uid;
print (_uid);
});
}
Я запустил флаттер без ошибок, но проблема все еще не устранена. Я напечатал операторы вокруг кода, поэтому я уверен, что "print (snapshot.data [" firstName "])" вызывает у меня проблемы.

Tried calling: []("firstName")выглядит иначе, чем ваш код выше. Вы уверены, что это не вызвано другим кодом? Попробуйте запуститьflutter cleanв терминале в каталоге вашего проекта, возможно, некоторые изменения кода не отражаются в работающем приложении.