我正在构建一个Flutter应用程序,我想在其中保持数据离线。
我正在使用相机或图库图像拾取器捕获图像,并能够将该图像存储到File image
变量中。
File _avatarImg;
void _getImage(BuildContext context, ImageSource source) {
ImagePicker.pickImage(
source: source,
maxWidth: 400.0,
maxHeight: 400.0,
).then((File image) {
_avatarImg = image;
});
}
这工作得很好,但我的问题是,我如何去存储这个图像的持久性?我是否应该在图像所在的手机中存储指向本地媒体目录的字符串链接?如果是这样的话,我会担心图像是否被用户意外删除。还是将图像本身以BLOB的形式存储到数据库中?这方面的最佳做法是什么?
2条答案
按热度按时间mefy6pfw1#
您可以将图像转换为BASE64并将图像作为字符串存储在数据库中。检查this link和this one
jyztefdp2#
Image
s和一般的文件都是作为BLOB
存储在SQLite
数据库中的。为此:
1.我们应该创建一个
Picture
类:1.然后我们可以相应地创建表格:
1.创建一个方法将
Picture
保存到数据库中:1.创建一个方法从数据库中获取
Picture
s:1.将
Picture
保存到数据库:1.在需要时使用它,例如:
注意:虽然在上面的示例中我们使用了
Image
,但这个概念适用于任何其他类型的文件。将文件转换为
base64
并将其存储为字符串可以工作,但it's not the best solution。一个问题是存储需求增加了33%,特别是在处理大文件时,这一需求增加得很快。