我需要一个按钮来删除当前查看的图像。图像路径存储在List<String>
中。图像通过CarouselSlider
从ImagePicker
出现。
我试着看看我是否可以通过.removeAt()
的硬编码索引删除图像,但同样,无法找到如何获得当前图像
什么是正确的方法来获取当前索引的屏幕上的图像?我已经尝试了与单一的图像和它的工作找到,但获得当前索引的当前查看照片是我遇到麻烦的地方。
这就是我获取图像的方式:
List<String> pickedImageList = [];
final imagePicker = ImagePicker();
Future pickImage() async {
final userPickedImages = await imagePicker.pickMultiImage();
for (var image in userPickedImages!) {
pickedImageList.add(image.path);
}
setState(() {});
}
这是我如何显示图像。按钮删除当前选定的照片是在底部的通用功能:
Column(
children: [
ElevatedButton(
onPressed: pickImage,
child: const Text('Add another image')),
CarouselSlider(
options: CarouselOptions(
// height: 200,
viewportFraction: .9,
enlargeCenterPage: true,
),
items: pickedImageList
.map(
(item) => SizedBox(
width: 200,
height: 200,
child: ClipRRect(
borderRadius: BorderRadius.circular(10),
child: Image.asset(
item,
height: 200,
width: 200,
)),
),
// color: Colors.green,
)
.toList(),
),
ElevatedButton(
onPressed: () {
setState(() {
removeImage();
});
},
child: const Text('Remove'))
],
),
所有的删除按钮,人们已经解决了SO都涉及单一的图像,这不是问题。
我想也许是一个手势检测器计数上下左右滑动,重置计数器时,它达到了列表的长度。负数将乘以它自己,以获得当前的索引可用。
1条答案
按热度按时间ztigrdn81#
要获取CarouselSlider构件中当前查看的照片的索引,可以使用onPageChanged回调属性用当前页面索引更新_currentPage变量。然后,可以使用_currentPage变量从pickedImageList列表中删除当前查看的照片。
下面是一个如何实现这一点的示例:
在本例中,每当用户在CarouselSlider小部件中滑动到新照片时,都会调用onPageChanged回调函数。该回调函数将使用当前页面的索引更新_currentPage变量,然后您可以使用该索引从pickedImageList列表中删除当前查看的照片。
我希望这对你有帮助!如果你有任何其他问题,请告诉我。