Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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
Flutter 使用image_picker软件包上传后删除图像_Flutter_Dart - Fatal编程技术网

Flutter 使用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); }); } 该图像已显示在设备上,我有一个删除按钮,我可以使用

我已使用image picker软件包成功上传图像,如下所示:

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?不工作是因为图像仍然保留在缓存中我真的不明白我该怎么做。我只是在试运气你确认图像还在缓存中吗?