【发布时间】:2018-10-02 15:08:50
【问题描述】:
我想在 sqflite 数据库中保存一个图像,然后,我想在 SliverAppBar 中显示它作为背景。直到现在我可以保存图像(不确定它是否正确,但不会引发错误 XD):
Directory directory = await getApplicationDocumentsDirectory();
String path = directory.path;
File newImage = await _image.copy('$path/${recipeName.text}.png'); //_image already taken with image_picker plugin
String base64Encoded = base64Encode(newImage.readAsBytesSync());
我保存在数据库中的这个字符串。但我也想展示。据我所知,我必须得到字符串,但从现在开始,我不知道如何走得更远。我写了一个函数来获取字符串,但不知道我应该如何处理这个字符串。函数如下所示:
Future fetchRecipe(String name) async{
var dbHelper = new DBHelper();
Future<List<Recipes>> recipes = dbHelper.getSpecRecipe(name);
return recipes;
}
getSpecRecipe(name) 指向这个函数:
Future<List<Recipes>> getSpecRecipe(String recipeName) async{
List<Map> list = await _db.rawQuery("SELECT * FROM recipes WHERE name = ?", [recipeName]);
List<Recipes> recipes = new List();
for(int i =0; i < list.length; i++){
recipes.add(new Recipes(list[i]["id"], list[i]["name"], list[i]["definition"], list[i]["duration"], list[i]["favorite"], list[i]["timestamp"], list[i]["image"], list[i]["backgroundColor"]));
}
return recipes;
}
如果有人能够解决我的问题,那就太棒了。在此先感谢XD
【问题讨论】:
-
您应该将图像保存到磁盘并将文件路径字符串保存到 SQL 数据库中的图像。然后,当您要加载图像时,您从数据库获取文件路径并从磁盘加载图像。
-
好主意。我会试试的。