You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在macOS/Windows端Flutter应用中通过系统文件管理器打开指定文件

Flutter 实现系统「打开方式」唤起应用并接收文件方案

直接读取main函数参数为空是因为移动平台原生层没有将文件路径参数透传到Flutter层,你需要分别在各端配置文件类型关联,再通过原生通道把收到的文件路径传递到Flutter侧,具体实现步骤如下:

分端配置

1. Android 端

  • 首先在android/app/src/main/AndroidManifest.xml的启动Activity标签下添加文件关联intent-filter,示例配置如下:
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <!-- 替换为你需要支持的文件MIME类型 -->
    <data android:mimeType="text/plain" />
    <data android:mimeType="application/pdf" />
</intent-filter>
  • 在MainActivity中重写onCreate和onNewIntent方法,将收到的文件路径通过MethodChannel传递到Flutter层,冷启动场景可以先缓存路径,等待Flutter初始化完成后再主动读取。

2. iOS 端

  • 打开ios/Runner/Info.plist,添加CFBundleDocumentTypes字段声明支持的文件类型,示例配置如下:
<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array/>
        <key>CFBundleTypeName</key>
        <string>自定义文件类型</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <!-- 替换为对应文件的UTI,比如pdf对应com.adobe.pdf,txt对应public.plain-text -->
            <string>com.adobe.pdf</string>
            <string>public.plain-text</string>
        </array>
    </dict>
</array>
  • 在AppDelegate中重写application:openURL:options:方法,拿到文件路径后通过MethodChannel传递到Flutter层。

3. 桌面端(Windows/macOS/Linux)

桌面端可以直接读取main函数的入参,前提是提前配置好应用和对应文件类型的关联:

  • Windows端需要修改打包配置,在注册表中写入文件关联信息
  • macOS端和iOS逻辑类似,在Info.plist中配置CFBundleDocumentTypes即可
  • Linux端修改.desktop文件添加MIME类型关联

Flutter 侧接收逻辑

  • 应用启动时先通过MethodChannel向原生层查询是否有缓存的待处理文件路径
  • 注册MethodChannel回调,监听应用前台运行时收到的新文件打开请求
  • 拿到文件路径后直接用dart:io的File类读取文件内容即可

简化实现方案

如果不想自行编写原生层逻辑,可以直接使用receive_sharing_intent这类封装好的插件,内部已经实现了各端的参数透传逻辑,只需按要求配置对应端的文件关联声明即可使用。

内容的提问来源于stack exchange,提问作者Benjamin Dean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:09:03