Вы можете вызвать метод asyn c из метода initState (), но uid будет возвращать ноль до тех пор, пока метод asyn c не будет завершен:
class _TestState extends State<Test> {
String uid;
@override
void initState() {
super.initState();
getUID();
}
void getUID() async {
Future.delayed(Duration(seconds: 2)); //Simulate the Firebase call
setState(() {
uid = 'firebasevalue';
});
}
@override
Widget build(BuildContext context) {
return Center(
child: Text(uid ?? 'loading'),
);
}
}
Но это не единственное решение. Вы можете использовать FutureBuilder или StreamBuilder для работы со своими фьючерсами