Flutter MacOs 访问文件

Flutter MacOs access to files

我正在尝试在 Flutter 中构建一个自定义桌面应用程序,以便能够加载图片,例如图库。 为此,我会要求用户选择一个文件夹,它会自动显示图片。

现在,从简单的事情开始,因为这是第一次为 Mac 开发,我只是想通过 Image.file(new File) 方法显示图片。

The issue that I got back is 

======== Exception caught by image resource service ================================================
The following FileSystemException was thrown resolving an image codec:
Cannot open file, path = 'media/preview.jpg' (OS Error: Operation not permitted, errno = 1)

我在想不知何故与权利有关。 我的权利是:

<key>com.apple.security.files.user-selected.read-only</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
<key>com.apple.security.assets.downloads.read-write</key>
<true/>
<key>com.apple.security.assets.pictures.read-write</key>
<true/>
<key>com.apple.security.assets.downloads.read-write</key>
<true/>

但由于我要加载图片的文件夹可能在任何地方,我想知道这是否是我出错的原因。

因此,只要您的应用程序在沙盒中,它看起来就只能在用户从打开的对话框中选择这些文件夹(下载、图片、音乐和电影)之外的文件时打开它们。

所以出于开发目的,我禁用了沙盒,意识到我无法在 Apple Store 上分发。

但至少我可以发展。享受

我遇到了同样的问题并通过在 example/macos/Runner/DebugProfile.entitlements 中禁用 com.apple.security.app-sandbox 来解决它:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.app-sandbox</key>
    <false/>
</dict>
</plist>

我无法访问位于外部的文件。但它对我有用,非常感谢...

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.app-sandbox</key>
    <false/>
</dict>
</plist>