так что моя проблема в том, что я пытаюсь загрузить экран после входа в систему с пользователем (firebase auth), это работает нормально. При входе в систему я сопоставляю идентификатор пользователя из firebase auth с тем же идентификатором в облаке firebase, чтобы я мог получить поле данных «work_title» и отобразить его непосредственно в текстовом виджете.
Итак из того, что я могу прочитать из inte rnet, якобы сначала все на экране рисуется, только потом можно получить идентификатор аутентификации текущего пользователя, поэтому я использую futurebuilder.
Мой вопрос сейчас: почему я не могу вернуть return Text(sh.data['work_title'].toString());
-часть? Я ввожу эту часть кода, но она возвращает только return Text("??");
-часть.
Я также прикрепил изображение этого.
Спасибо:)
Widget buildText2() {
return FutureBuilder(
future: FirebaseAuth.instance.currentUser(),
builder: (context, AsyncSnapshot<FirebaseUser> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(
child: Text("Loading ..."),
);
} else {
if (snapshot.hasData) {
print(snapshot.hasData); // prints true, so we enter this part:
DocumentReference doc = Firestore.instance
.collection("user_profiles")
.document(snapshot.data.uid);
doc.get().then((sh) {
if (sh.exists) {
print(sh.exists); // prints true, så vi enter here as well:
print(sh.data['work_title'].toString());
return Text(sh.data['work_title'].toString()); // <-- I want to return this
}
});
}
} return Text("??");
});
}
Скриншот кода