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