flutter 如何动态更新ListView同时异步获取数据?

ldioqlga  于 2023-02-16  发布在  Flutter
关注(0)|答案(1)|浏览(196)

我正在尝试找出在获取数据列表时更新ListView.builder()的最佳方法。本质上,我正在批量下载数据--比方说一次下载10张图片--并在future完成后在ListView.builder中显示它们,在它下面有一个指示符,表示我们仍在获取数据。一直这样做,直到所有内容都被获取。
最好的解决办法是什么?
示例代码我有什么:

void _fetchImages() async {
  // Fetch images
  for (...) {
    final results = await Future.wait[imageFutures];
    
    // update list here
    imageList.addAll(results); // let's say data comes back in correct format
    setState((){});
  }  
}

@override
void initState() {
  super.initState();
  _fetchImages();
}

@override
Widget build(BuildContext context) {
  return ListView.builder(...);
}
bfrts1fy

bfrts1fy1#

Stream返回List,然后可以使用StreamBuilder

return StreamBuilder<List<MyImage>>(
      stream: dataStream,
      builder: (BuildContext context, AsyncSnapshot<List<MyImage>> snapshot) {
        if (snapshot.hasData) {
          return Center(
            child: ListView.builder(
                ...
          );
        }
        return SomeWidget(
         ...
        );
      },
    );

相关问题