我只是解析复杂的JSON并显示在listView上以供学习。
1)模型类别
succ
2)ViewModel
r
3)查看代码的一部分。
M - 2
所以,我的问题是,每次我失败时都会遇到诸如此类的错误。
“ Future”类型不是“ Future”类型的子类型
我知道有很多错误,但是我是Flutter的新手。 我要去哪里错了?如何解决此问题,请指导我正确的方向。
已更新
r
模型类有什么错误吗?
答案 0 :(得分:1)
扔掉AllUsers
类型和arryOfUser
成员。您不需要它们,并且通过放入它们,就无法满足FutureBuilder的期望。
class UserViewModel {
Future<List<User>> fetchUserData() async {
var response = await http.get('https://jsonplaceholder.typicode.com/users');
List<User> users = json.decode(response.body).map((u) => User.formJson(u)).toList();
print("users $users");
print("response === >> ${users[0].company.catchPhrase}");
return users;
}
}
class HomeScreenState extends State<HomeSceen> {
UserViewModel userViewmodel;
@override
initState(){
super.initState();
userViewmodel = UserViewModel();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("JSON Parsing")
),
body: Container(
child: FutureBuilder<List<User>>(
future: userViewmodel.fetchUserData(),
builder: (context, snap){
return setupListView(snap.data);
},
),
),
);
}
Widget setupListView(List<User> users){
return ListView.builder(
itemCount: users.length,
itemBuilder: (BuildContext context, int index) {
setupListTile(users[index]);
},
);
}
Widget setupListTile(User userdata){
return ListTile(
leading: CircleAvatar(
backgroundColor: Colors.orangeAccent,
child: Text(userdata.name[0].toUpperCase(),
style: TextStyle(color: Colors.white)),
),
title: Text(userdata.name),
subtitle: Text(userdata.company.name),
);
}
}