Flutter 使用image_picker软件包上传后删除图像
我已使用image picker软件包成功上传图像,如下所示:Flutter 使用image_picker软件包上传后删除图像,flutter,dart,Flutter,Dart,我已使用image picker软件包成功上传图像,如下所示: final picker = ImagePicker(); Future selectPhoto() async { final pickedFile = await picker.getImage(source: ImageSource.gallery); setState(() { _image = File(pickedFile.path); }); } 该图像已显示在设备上,我有一个删除按钮,我可以使用
final picker = ImagePicker();
Future selectPhoto() async {
final pickedFile = await picker.getImage(source: ImageSource.gallery);
setState(() {
_image = File(pickedFile.path);
});
}
该图像已显示在设备上,我有一个删除按钮,我可以使用该按钮删除图像并在保存前上载另一个图像
child: Container(
height: height * 0.2,
width: width * 0.2,
child: Image.file(
_image,
fit: BoxFit.fill,
),
),
我的问题是如何从缓存中删除图像,因为这一块不工作
onTap: () {
setState(() {
imageCache.clear();
print('removes $_image');
});
},
通过调用按钮中的一个方法解决了这个问题,该按钮已将路径返回null的state方法设置为空
clearimage() {
setState(() {
_image = null;
});
}
您对缓存与用代码显式地将文件存储在内存中相比有一个误解。Flatter可能会将您在小部件中使用的图像存储在缓存中,以便将来可以更快地加载它们。imageCache.clear;确实清除了缓存,并且很可能正在代码中执行它的工作。但是,检查图像是否仍被缓存的方法存在缺陷 imageCache.clear;仅清除缓存,不会删除传递到Image.file小部件的文件。这意味着_imagefile存储在内存中的变量即使在缓存清除期间也会保持不变。要真正删除此图像,您可以使用delete方法,或者如果您只想停止显示图像,请通过将文件引用设置为null来尊重文件: _image=null;
你能详细说明一下不工作吗?为什么在从缓存中删除图像时调用setState?不工作是因为图像仍然保留在缓存中我真的不明白我该怎么做。我只是在试运气你确认图像还在缓存中吗?