【问题标题】:How do I open a file from disk, in a Flutter app?如何在 Flutter 应用程序中从磁盘打开文件?
【发布时间】:2018-04-06 23:58:31
【问题描述】:

在 Flutter 应用程序中,我有一个位于 FlutterTest\sandbox\lib\my_widget\my_widget.dart 的 dart 文件。

我有一张图片位于FlutterTest\sandbox\lib\my_widget\imgs\myImage.png

来自my_widget.dart 如何将文件指向此图像,类似于new File("???\my_widget\myImage.png")

澄清一下,在 Java 中我可以执行类似 MyClass.class.getResource("myImage.png").toString() 的操作。

顺便说一句,如果我print(Directory.current.path) 它给了我简单的/。如果我尝试列出该目录的内容,它会告诉我:“目录列出失败,路径 = '/'(操作系统错误:权限被拒绝,errno = 13)”。所以我实际上并不知道当前目录在哪里。

【问题讨论】:

  • 您没有将图像存储在 asset 目录中的方式,因此您可以在 Flutter 中轻松获取它们
  • 对于小部件测试,我们有一些参考图像来显示小部件的外观,我只想让开发人员将它们放在测试目录中,而不必将它们列为资产。它不适用于真正的生产应用程序本身。除此之外,我想知道您在哪里保存和检索从 Internet 下载并希望在本地缓存的图像。

标签: dart flutter


【解决方案1】:

您可以直接访问文件系统,但由于 android 和 iOS 的差异,您最终可能会使用 path provider 插件。另外,请参阅thisflutter cookbook,因为他们称之为。

但是,如果您只想从构建中访问文件,则需要将其定义为 pubspec 中的资产,然后使用 Flutter 的 AssetBundle(或 Image.asset)而不是直接访问它使用 File 或 Image.file。见flutter documentation on assets.

【讨论】:

  • 从您就打开文件和获取路径提出的一系列问题来看,似乎您可能在颤振方面过于努力,因为没有更好的术语。如果您在显示图像等基本操作时遇到障碍,则很有可能您错过了某些东西,而不是颤抖不支持它。我想建议您阅读并遵循网站this layout one for example 上的一些教程,因为从长远来看,这将真正节省您的时间 =)
  • 你说得对,我一直很反感,我会停下来。我很抱歉=D。这个问题的答案在颤振网站上很容易找到,但其他的都是合理且经过深思熟虑的。不过,我对您正在努力的最终结果有点好奇!
  • 对于小部件测试,我们有一些参考图像来展示小部件的外观,我只想让开发人员将它们放在测试目录中,而不必将它们一一列为资产。它不适用于真正的生产应用程序本身。 Flutter 有一个功能请求可以导入整个目录,而不必逐个文件指定,而且似乎他们实际上正在处理它。
猜你喜欢
  • 2018-08-26
  • 1970-01-01
  • 2011-04-04
  • 2021-10-28
  • 2013-11-19
相关资源
最近更新 更多