Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Listview 如何访问列表视图中的单个项目以更新进度条指示器_Listview_Flutter - Fatal编程技术网

Listview 如何访问列表视图中的单个项目以更新进度条指示器

Listview 如何访问列表视图中的单个项目以更新进度条指示器,listview,flutter,Listview,Flutter,我有一个Listview.builder列表,它创建了一个可以从网络URL播放的视频文件列表。我给用户一个选项,可以将每个视频下载到他们的本地设备。这很好,我可以将进度百分比存储在一个变量中。如何访问列表视图中的单个项目,以便添加进度条指示器?当前,如果我尝试更新生成器中的一个项目,它会更新每个项目 Container BuildVideoList() { if (result == false) { return Container( child: Cent

我有一个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'),
          )
        ],
      ),
    );
  }
Container BuildVideoList(){
如果(结果==false){
返回容器(
儿童:中心(
孩子:大小盒子(
子对象:CircularProgressIndicator(),
身高:50.0,
宽度:50.0,
),
),
);
}
返回容器(
颜色:Colors.grey.shade300,
子项:ListView.builder(
itemCount:_videos.length,
itemBuilder:_buildItemsForListView,
),
);
}
小部件_buildItemsForListView(BuildContext上下文,int索引){
var downloadText=Text('Download$progressString');
返回填充(
填充:常数边集全部(8.0),
子:列(
儿童:[
扁平按钮(
已按下:(){
Navigator.push(上下文,
MaterialPage路线(生成器:(上下文){
返回HitomiVideoPlayer(
videoKey:_videos[index].videoId,
标题:_视频[索引]。标题);
}));
},
孩子:填充(
填充:常数边集全部(8.0),
子项:Image.network(_videos[index].Image),
),
),
文本(_视频[index]。标题,样式:TextStyle(fontSize:18)),
填充物(
填充:常数边集全部(12.0),
子项:文本(_视频[索引])。说明,
样式:TextStyle(fontSize:12)),
),
扁平按钮(
已按下:(){
下载文件(
标题:_视频[索引]。标题,
description:_视频[index]。description,
图像:_视频[索引]。图像,
videoID:_videos[index].videoID);
},
孩子:下载文本,
),
扁平按钮(
已按下:(){
addInfo();
},
子项:文本(“添加信息”),
)
],
),
);
}

如果
\u videos[index]
这为您提供了一个视频模型对象的实例,您应该在模型本身中添加一个进度值变量。根据相应的进度更新该值,并使用该值显示列表项中的进度。就像您已经在使用的
标题
图像
。@HarshvardhanJoshi非常感谢您,效果非常好。你加深了我对飞镖和颤振的理解:)