#flutter
#flutter
Вопрос:
я новичок в flutter и пытаюсь извлечь данные из api для тестирования, но у меня есть некоторые ошибки, вот ссылка, по которой я пытаюсь извлечь из него данные и отобразить их в FutureBuilder, но я не могу получить информацию, которая может мне помочь!
вот мой код:
class _MyHomePageState extends State<MyHomePage> {
final String apiUrl = "https://jsonplaceholder.typicode.com/users";
Future<List<Post>> fetchData() async {
http.Response res = await http.get(apiUrl);
if (res.statusCode == 200) {
var obj = json.decode(res.body);
List<Post> posts = new List<Post>();
for(int i=0;i>obj.length;i ){
Post post = Post.fromJson(obj[i]);
posts.add(post);
print(post.name);
}
return posts;
}
}
@override
void initState() {
// TODO: implement initState
super.initState();
fetchData();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: FutureBuilder(
future: fetchData(),
builder: (ctx,snapShot){
if(snapShot.connectionState == ConnectionState.waiting){
return CircularProgressIndicator();
}else{
return ListView.builder(
itemBuilder: (context,index){
return ListTile(
leading: CircleAvatar(),
title: Text(""),
subtitle: Text(""),
);
});
}
},
),
),
);
}
}
вот ссылка, по которой я преобразую api json в dart
Комментарии:
1. Ошибка находится в вашем методе Post.FromJSON(). Можете ли вы показать его реализацию?
2. i > obj.length ? и все еще работает?
Ответ №1:
Изменить
for(int i=0;i>obj.length;i ){
Post post = Post.fromJson(obj[i]);
posts.add(post);
print(post.name);
}
return posts;
Для
var response = List<Post>.from(obj.map((i) => Post.fromJson(i)));
return response;
После этого добавьте itemCount: snapShot.data.length
в свой ListView.builder
Комментарии:
1. да, это сработало, но я не могу вызвать его в FutureBuilder при создании snapShot.data[index]
2. попробуйте добавить ItemCount: snapShot.data.length в ваш ListView.builder