首页 > 解决方案 > 如何访问列表视图中的单个项目以更新进度条指示器

问题描述

我有一个 Listview.builder 列表,它创建了一个可以从网络 URL 播放的视频文件列表。我为用户提供了将每个单独的视频下载到其本地设备的选项。这很好用,我可以将进度百分比存储在一个变量中。如何访问列表视图中的单个项目,以便添加进度条指示器?目前,如果我尝试更新构建器中的一个项目,它会更新每个项目..

Container BuildVideoList() {
    if (result == false) {
      return Container(
        child: Center(
          child: SizedBox(
            child: CircularProgressIndicator(),
            height: 50.0,
            width: 50.0,
          ),
        ),
      );
    }

    return Container(
      color: Colors.grey.shade300,
      child: ListView.builder(
        itemCount: _videos.length,
        itemBuilder: _buildItemsForListView,
      ),
    );
  }

  Widget _buildItemsForListView(BuildContext context, int index) {
    var downloadText = Text('Download $progressString');
    return Padding(
      padding: const EdgeInsets.all(8.0),
      child: Column(
        children: <Widget>[
          FlatButton(
            onPressed: () {
              Navigator.push(context,
                  MaterialPageRoute<void>(builder: (context) {
                return HitomiVideoPlayer(
                    videoKey: _videos[index].videoId,
                    title: _videos[index].title);
              }));
            },
            child: Padding(
              padding: const EdgeInsets.all(8.0),
              child: Image.network(_videos[index].image),
            ),
          ),
          Text(_videos[index].title, style: TextStyle(fontSize: 18)),
          Padding(
            padding: const EdgeInsets.all(12.0),
            child: Text(_videos[index].description,
                style: TextStyle(fontSize: 12)),
          ),
          FlatButton(
            onPressed: () {
              downloadFile(
                  title: _videos[index].title,
                  description: _videos[index].description,
                  image: _videos[index].image,
                  videoID: _videos[index].videoId);
            },
            child: downloadText,
          ),
          FlatButton(
            onPressed: () {
              addInfo();
            },
            child: Text('Add Info'),
          )
        ],
      ),
    );
  }

标签: listviewflutter

解决方案


推荐阅读