我正在开发一种Flutter应用程序,该应用程序允许用户设置自己选择的背景图片,并“永久保留直到用户对其进行更改”。
如果用户离开页面并返回该图像,则暂时使用Image.file(pickedImage)将会被关闭。
我已经实现了图像选择器,并尝试将图像文件存储在sharedpreferences中,但是我错了。ImagePicker返回的是Image File,而不是Image File Path。
如何获取选取的图像文件路径并将其用作背景?
最佳答案
当ImagePicker返回文件时,它会返回您注意到的File对象。该文件位于应用外部,并且可能是临时文件(即可以随时移动/删除/删除)-它可能会保留一段时间,但您不应依赖该文件。
相反,在用户选择了镜像之后,您应该将其复制到应用程序的存储目录,然后从那里开始对其进行访问。
为此,请按照flutter reading/writing files documentation中的说明进行操作。但基本上,您想做的是使用path_provider library的getApplicationDocumentsDirectory
方法获取本地目录,然后调用file.copy(<path under application document directory>)
,文件为您从图像选择器接收的文件,而应用程序文档目录下的路径为您想要的任何内容。
即
var image = await ImagePicker.pickImage(source: ImageSource.camera);
Directory appDocDir = await getApplicationDocumentsDirectory();
String bgPath = appDocDir.uri.resolve("background.jpg").path;
File bgFile = await image.copy(bgPath);
拥有该文件后,您要做的就是将bgFile的路径保存到您的SharedProperties中(或者理论上,您可以每次对其进行硬编码并覆盖它)
新图像已加载-由您决定,尽管这种方法可能会遇到以下问题
文件开关)。然后,您将从共享属性中加载bg文件路径并使用它。
希望有帮助=)。
关于android - 保存ImagePicker文件路径并将其用作背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53211261/