【问题标题】:How to open file with a Flutter app on MacOS/Windows?如何在 MacOS/Windows 上使用 Flutter 应用程序打开文件?
【发布时间】:2021-10-28 16:53:29
【问题描述】:

我有一个应该打开某些文件类型的应用程序。从应用程序本身来看,file_picker 插件非常简单。但是如何通过文件管理器打开文件呢?换句话说,通过“打开方式”上下文菜单。

我尝试检查传递给main 的参数,但它们始终为空。注册通用链接也没有多大意义,因为我只需要传递文件 - 仅此而已。

【问题讨论】:

  • 我正在寻找同样的东西!我刚刚发现经典的 url_launcher 可以做类似的事情。但我找不到通过“打开方式”选项打开文件的方式。有一点很清楚,我们可以简单地通过使用 url_launcher(在 6.0.10 中测试)来启动像 .xlsx 这样的文件!如果您希望我这样做,我可能会添加答案[:
  • 那太好了!我找到了一种将您的应用程序添加到 MacOS 上的“打开方式”菜单的方法。我会尽快添加我的部分答案。
  • 另外,启动文件是一回事,我想要的是能够使用应用程序打开文件,这在 atm 可能是不可能的,因为 FlutterAppDelegate 只引用窗口而不是应用程序本身。
  • 期待看看如何实现open with option。这对我来说真的很酷!我的简单答案就在这里 [:
  • 在这种情况下,您可以等待 file_picker,然后将路径分配给本地值,最后使用答案的 sn-p,我猜。但是我们需要检查正在使用的文件扩展名是否与file://method 到canLaunch 一起使用,或者使用其他方法而不是file:// [:

标签: flutter flutter-desktop


【解决方案1】:
if (await canLaunch("file://..path...xlsx")) {
  await launch("file://..path...xlsx");
} else {
  print("cannot launch url ]:");
}

这个简单的 sn-p 基本上适用于 windows 和 mac 操作系统!如果您可以使用经典的 path_provider 处理路径,您也可以在 web、ios、android 上使用相同的功能。在我的测试中,当我键入并输入file:// url 时,网络下载了文件。

所以,我猜uri scheme 是做这些伎俩的人。我尝试了几种类型的文件,正如我评论的那样,excel 工作得很好,finder(或文件资源管理器)也可以工作。在我的测试中,pptx 甚至可以使用文件 url。是的,它会打开本机应用程序。我找不到“打开方式..”选项,但这意味着它会自动在 excel 中打开 xlsx 文件(即 ATM 我没有任何选项来启动“打开方式..”弹出窗口) .

同样,我什至可以发现instagram:// 也适用于 url 启动器。一件出乎意料的艰难事情是在 mac os 桌面上设置正确的路径。由于该应用程序正在 Apple 先生之前指定的某个地方进行调试,因此只需从 path_provider 调用方法即可返回远离桌面路径(主屏幕)的路径,因为该应用程序正在其他地方运行(例如 /Users/${MacOsUser}/Library/Containers/${fullPackagePath}/Data/Documents for mac os,其中在分发阶段会有所不同)。

希望这会有所帮助。仅供参考,我无法使用这种方法启动 battle.net 和英雄联盟,它们不会在文件资源管理器中显示它们的扩展名]:祝您有美好的一天 [:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    • 2021-10-07
    相关资源
    最近更新 更多