我正在尝试通过实时Web服务响应快速加载listview,有人可以帮助我吗?如何做到这一点?
答案 0 :(得分:1)
您应该在后台解析数据。
创建一种获取数据的方法:
Future<List<Photo>> fetchPhotos(http.Client client) async {
final response =
await client.get('https://jsonplaceholder.typicode.com/photos');
// Use the compute function to run parsePhotos in a separate isolate
return compute(parsePhotos, response.body);
}
在FutureBuilder的builder
中添加获取方法。
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(title),
),
body: FutureBuilder<List<Photo>>(
future: fetchPhotos(http.Client()),
builder: (context, snapshot) {
if (snapshot.hasError) print(snapshot.error);
return snapshot.hasData
? PhotosList(photos: snapshot.data)
: Center(child: CircularProgressIndicator());
},
),
);
}
}
查看完整示例:https://flutter.io/cookbook/networking/background-parsing/