使用FutureBuilder摇动我们如何创建具有延迟加载或更多加载元素的列表,并在Web服务上调用

时间:2018-08-24 10:23:17

标签: flutter

我正在尝试通过实时Web服务响应快速加载listview,有人可以帮助我吗?如何做到这一点?

1 个答案:

答案 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/