【问题标题】:Image.file() Showing Blank When Specified File Was Explicitly CreatedImage.file() 显式创建指定文件时显示空白
【发布时间】:2021-01-11 10:37:43
【问题描述】:

在我的 Flutter 应用程序的 iOS 变体中,当我使用显式创建 .jpg 文件时

    File(path.join(filePath, fileName))
      ..createSync(recursive: true)
      ..writeAsBytesSync(buffer);

呈现文件的小部件(通过调用 Image.file(),将文件作为参数传递给它)会产生空白图像。

没有抛出异常,表明文件未找到或文件内容无效。它表现得好像文件是空白的,但是当我使用 Finder 浏览到文件时,文件就在那里,当我单击图像时,预览会呈现预期的图像。

当图像来自设备相机或设备图库时执行相同的代码时,它可以工作,而当在 Android 变体中执行相同的代码并显式创建文件时,它也可以工作。

我唯一能想到的是它与在我的 iOS 模拟器目录结构深处创建图像有关

ie-/Users/joselitope/Library/Developer/CoreSimulator/Devices/F2AE8082-E670-498B-B2C6-9A83BE1855A4/data/Containers/Data/Application/7B01A347-69AE-4A1F-8567-7FCC256013F5/tmp/comp_image_cropper_2CC9EEFB- A126-4811-BD80-485B4C41F3A2-18523-00001C049E5AAE85.jpg

但同样,使用 Finder 可以看到该文件,因此这可能不是原因。

也许我必须在 iOS 中创建文件时设置某些权限,或者在我的 pubspec.yaml 中设置适用于 iOS 的设置?

非常感谢所有帮助。

我的环境如下: 卡特琳娜 10.15.7, Flutter 1.22.5 通道稳定, XCode 12.3, 模拟器:iPhone 12 Pro Max - 14.3,

【问题讨论】:

    标签: ios image flutter


    【解决方案1】:

    有人发布了一条建议,促使我再次研究这个问题。 (后来有人删除了他的建议,所以我无法感谢他。)

    无论如何,当我尝试重现该问题时,即使在之前发生的确切用例中,它也不再发生。

    所以问题仍然存在,因为这段代码在 Android 上已经在各种设备上运行了相当长的一段时间,所以我唯一排除了它不是竞争条件的原因。

    这是我能想到的:

    知道了我正在写入的文件路径,我意识到我正在写入应用程序的 /tmp 目录,iOS 会定期清空该目录。我在想我不应该把东西放在那里。相反,我一直在写应用程序的文档目录,从那以后就没有发生过。

    最初的 /tmp 目录是由我正在使用的一个包为我选择的,因为它很长而且我是 iOS 新手,所以我并没有真正去研究它,只关心文件在那里,它是。

    无论如何,请保持我的手指交叉以确保修复成功。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-13
      • 2020-04-27
      • 2022-07-29
      • 1970-01-01
      • 2023-02-17
      • 1970-01-01
      相关资源
      最近更新 更多