【问题标题】:Flutter - SQFlite store and load image from databaseFlutter - SQFlite 从数据库存储和加载图像
【发布时间】: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 数据库中的图像。然后,当您要加载图像时,您从数据库获取文件路径并从磁盘加载图像。
  • 好主意。我会试试的。

标签: android ios dart flutter


【解决方案1】:

从提供的 sn-ps 来看,您似乎正在尝试将图像保存为数据库中的 base64。正如@Nordeast 在 cmets 中提到的那样,最好将图像保存在设备的存储中并存储文件路径。此外,鉴于提供的 sn-ps,很难在本地复制该行为。

【讨论】:

    猜你喜欢
    • 2019-12-03
    • 1970-01-01
    • 2021-09-14
    • 2020-01-11
    • 2020-08-19
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多