gpt4 book ai didi

flutter - ImagePicker,如何再次设置图像?

转载 作者:行者123 更新时间:2023-12-03 04:14:30 24 4
gpt4 key购买 nike

最小码:

File _file;

Future<void> _pickImage() async {
final image = await ImagePicker.pickImage(source: ImageSource.camera);

if (image != null) {
final file = File("${(await getApplicationDocumentsDirectory()).path}/image.png");
await file.writeAsBytes(await image.readAsBytes());
setState(() => _file = file); // `_file = image` works though
}
}

@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: FloatingActionButton(child: Icon(Icons.camera_alt), onPressed: _pickImage),
body: _file == null ? Container() : Image.file(_file),
);
}

Watch video

如您所见,一旦我选择了图像,它就可以了,但是第二次选择时,它就不起作用了,而且我也没有遇到任何错误。谁能帮忙吗?

最佳答案

您需要三件事:

首先,您必须使用ImageProvider及其evict()方法:

var image = FileImage(File('someImage.jpg'));

那么您需要使用上面的 ImageImageProvider小部件,并且还需要分配一个唯一的 key以便每次调用 build()方法时“不同”:
child: Image(
image: image,
key: UniqueKey(),
),

最后,在覆盖 someImage.jpg之后,您必须调用 evict()方法:
// part of your _pickImage() method
// here someImage.jpg contains updated content
image.evict();
setState(() {});

更新:实际上,您不需要 var image = FileImage(File('someImage.jpg'));-您可以在 Image小部件内直接将其用作 image: FileImage(File('someImage.jpg')),并在覆盖图像后调用 FileImage(File('someImage.jpg')).evict()

关于flutter - ImagePicker,如何再次设置图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60914284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com