【问题标题】:How do I read and write image file locally for Flutter Web?Flutter Web 如何在本地读写图片文件?
【发布时间】:2020-09-24 03:59:51
【问题描述】:

我一直在寻找将 Flutter Web 中的图像文件读取和写入本地目录的方法。目的是使该站点无需两次下载图像。例如:我们可以检查文件是否存在,如果不存在,那么我们可以下载它。

我们可以像这样在 Flutter App 中轻松做到这一点:

  • 要访问本地存储中的文件:

    // Getting App's local directory
    final Directory localRootDirectory = await getApplicationDocumentsDirectory();
    
    final String filePath = p.join(localRootDirectory.path, path, filename);
    final tempFile = File(filePath);
    return await tempFile.readAsBytes();
    
  • 然后保存我们要做的新文件:

    //Writing the image into file
    tempFile = await File(filePath).create(recursive: true);
    await tempFile.writeAsBytes(bytes);
    

那么 Flutter Web 中是否有与上述解决方案等效的方案?

谢谢

【问题讨论】:

    标签: flutter-web


    【解决方案1】:

    我认为这不能使用网络上的文件来完成。但是,您可以将SharedPreferences 用于相同目的。

    SharedPreferences支持网络:shared_preferences

    【讨论】:

    • 谢谢。但这不存储图像。我正在使用 Firebase 存储,我不希望客户端浏览器每次都重新下载相同的内容。这甚至可能吗?浏览器不是有保存图片的地方吗?
    • 我认为由于某些安全原因,浏览器不提供对文件的访问。确实 shared_preferences 不存储图像,但您可以将它们编码为字符串并存储它。然后在检索时对其进行解码。此外,您可以检查某些键是否存在以检查图像是否被缓存...
    【解决方案2】:

    虽然上面的答案是公认的答案,但上面的解决方案只在浏览器打开时有效。

    最后我发现我不必担心将其保存在本地,无论如何浏览器会将临时 Internet 文件保存在其缓存中。呼……!

    【讨论】:

      猜你喜欢
      • 2019-12-02
      • 2019-06-04
      • 2022-07-06
      • 2019-11-27
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 2013-11-27
      • 2012-08-14
      相关资源
      最近更新 更多