Map user = {};
Future<void> getUser(String idProfile) async {
final response = await ac.getItem("/v2/users/:0", [idProfile]);
if (response.statusCode >= 200 && response.statusCode < 300) {
setState(() {
user = json.decode(response.body);
print(user);
});
}
}
@override
void initState() {
super.initState();
getUser(getCurrentUser());
print(user);
}
第一次打印时,它返回用户。然而,第二次却没有。我需要获取用户信息。我怎么能做到呢?
getUser
是一个未来的方法,你需要等到它从API获取数据。当您使用StatefulWidget
时,您可以在它从API获取数据时显示着陆指示。
如果在Column
小部件内,
if (user.isEmpty) Text("fetching data")
else LoadDataWidget(),
也可以使用三元运算符
Map user = {};
//Return a user from the function
Future<Map<String, dynamic>> getUser(String idProfile) async {
final response = await ac.getItem("/v2/users/:0", [idProfile]);
if (response.statusCode >= 200 && response.statusCode < 300) {
user = json.decode(response.body) as Map<String, dynamic>;
return user
}
else {
throw Exception();
}
}
// Set the user value in initstate
@override
void initState() {
super.initState();
user = getUser(getCurrentUser());
print(user);
}