【发布时间】:2021-11-29 20:24:13
【问题描述】:
试图显示登录的 id,这是我从我的 API 收到的:
{ user_id: '10001', iat: 1633915047, exp: 1633922247 }
这就是我得到它的方式:
Future<User> fetchUsers() async {
var url = Uri.http('localhost:8000', "/home");
var prefs = await SharedPreferences.getInstance();
var token = prefs.getString('token');
var res = await http.get(url, headers: {'x-access-token': token!});
return User.fromJson(jsonDecode(res.body));
}
这是用户类:
class User {
final String id;
User({
required this.id,
});
factory User.fromJson(Map<String, dynamic> json) {
return User(id: json['user_id'] as String);
}
}
这是我的初始化状态:
void initState() {
super.initState();
futureUser = fetchUsers();
}
这是我的小部件生成器。添加以下行修复它:
fetchUsers().then((value) {return value.id;
Widget build(BuildContext context) {
return FutureBuilder(
future: fetchUsers()**.then((value) {return value.id;**
builder: (context, snapshot) {
if (snapshot.hasError) {
print(snapshot.error);
return const Center(
child: Text('Error'),
);
} else if (snapshot.hasData) {
print(snapshot.data.toString());
return Scaffold(
appBar: AppBar(
title: Text('Bienvenido ${snapshot.data}'),
backgroundColor: Colors.green[300],
),
);
} else {
return const Center(
child: CircularProgressIndicator(),
);
}
});
}
只是想在title: Text('Bienvenido ${snapshot.data}'),线上显示ID
但我得到的是 Instance of 'User' 而不是 id...
关于我做错了什么的任何线索?
【问题讨论】: