В моем приложении есть ящик, и мне нужно, чтобы он отображал некоторую информацию о текущем пользователе. Я сделал это, но данные, которые мне нужны, отображаются только через несколько секунд, потому что функции для их получения находятся внутри виджета. Вот некоторый код:
class MainDrawer extends StatefulWidget {
@override
_MainDrawerState createState() => _MainDrawerState();
}
class _MainDrawerState extends State<MainDrawer> {
UserCore user = UserCore();
Future getUser() async {
var uid = await FirebaseAuth.instance.currentUser().then((val) {
return val.uid;
});
Firestore.instance
.collection("users")
.where("uid", isEqualTo: uid)
.getDocuments()
.then((val) {
user = UserCore.fromMap(val.documents[0]);
setState(() {});
});
}
@override
void initState() {
getUser();
super.initState();
}
@override
Widget build(BuildContext context) {
return Drawer(
child: Container(
alignment: Alignment.centerLeft,
color: Color.fromRGBO(59, 46, 46, 1),
child: ListView(
shrinkWrap: true,
scrollDirection: Axis.vertical,
//padding: EdgeInsets.zero,
children: <Widget>[
Column(
children: <Widget>[
DrawerHeader(
child: Image.asset(
"img/logo.png",
width: 100,
),
),
drawerInfo("User: ", user.info1 == "" ? user.info2: user.info1),
drawerInfo("Email: ", user.email),
],
),
Это основная часть кода, и мой последний вопрос: как я могу сделать так, чтобы данные, поступающие из базы данных Firebase, перестали внезапно появляться в ящике и быть там, когда пользователь это открывает? Этот ящик присутствует в большинстве приложений, поэтому передача информации в качестве параметра практически невозможна.