学起来Flutter将支持桌面应用开发

38次阅读

共计 1664 个字符,预计需要花费 5 分钟才能阅读完成。

英文原文

Flutter 团队正在扩展 Flutter,支持创建 macOS、Windows 和 Linux 应用程序。从长远来看,这项工作将提供一个完全继承的解决方案,flutter create,flutter run 和 flutter build 在桌面平台开发上的表现将和现在的移动平台开发中一样,但是目前这项工作还在进行中。

当前的状况

下面提供了平台状况的高级概述。

详细信息请参阅 源码仓库

重要提示:Flutter 桌面 API 仍处于早期阶段,如有更改,恕不另行通知。不会提供 API 或 ABI 的向后兼容性。Flutter 更新之后,所有使用了 Flutter 的项目的代码都需要做更新并且重新编译。

macOS 系统

这是最成熟的桌面平台(出于一些原因,它非常接近于我们已经支持的 iOS)。

桌面版中以 Flutter 开头的类与 iOS 通用,所以应该基本稳定。以 FLE 开头的类仍处于早期阶段。

Windows 系统

当前的 Windows shell 只是 GLFW 占位符, 以便与前期实验. 未来它将被 Win32 或者 UWP shell 替代,因为 Win32 或者 UWP shell 允许在 Flutter 应用程序中嵌入 view-level。

预计,最终版本的 shell APIs 和当前实现的方式完全不同。

Linux

和 Windows 一样,当前 Linux shell 只是 GLFW 占位符。我们想创建一个库,让开发可以任何部分嵌入 Flutter,无论你使用 GTK+, Qt, wxWidgets, Motif, 还是其他任意工具包。但是我们还没有确定一个好方法。

插件

所有平台都支持编写插件(例如 flutter-desktop-embedding 这些插件),但是,目前依然很少有插件实际上具有桌面支持。

工具

Flutter 支持桌面的工具开发还在进行中。要使用任何桌面支持工具(例如用 flutter devices 列出主机)目前必须满足两点:

  1. 你不能使用稳定的 Flutter channel。因为桌面支持还没有被认为是稳定的和适合生产环境的
  2. 你必须设置 ENABLE_FLUTTER_DESKTOP 环境变量为true。这是为了避免在指定长期解决方案时影响现有的移动开发工作流程(参见:#30724。

预构建 Shell 库

默认情况下,桌面库未下载,可以通过运行运行 flutter precache 下载,根据你的你的操作系统带上参数 –linux,–macos 或 –windows。

C++ Wrapper

Windows 和 Linux 库提供 C 语言 API。为了更容易使用他们,可以使用 C ++ 包装器,将其构建到应用程序,中以便与提供更高级的 API 调用。上面提到的 flutter precache 命令会将这个包装器的源码下载到与该库同目录下的 cpp_client_wrapper 文件夹中。

使用 Shells

由于目前没有桌面 shell 工具的支持,你需要自己写一个应用的运行工具,并且在库里链接,就像任何你使用的插件那样。这将需要做一些你熟悉所使用的桌面系统的原生开发。如果你在桌面系统系统开发方面没有经验,你需要等到 flutter 桌面开发工具支持可用。

所以,使用 Shells 请参阅你所使用的操作系统的库的头。将来会补充更多的文档。至于现在,可以参考 flutter-desktop-embedding 示例,也许会有启发。

另外,你的 Flutter 桌面应用程序还需要 bundle Flutter assets(由 flutter build bundle 创建)。在 Windows 和 Linux 你将还会需要 Flutter 引擎的 ICU 数据。(在你的 Flutter 目录中下的 bin/cache/artifacts/engine 查找icudtl.dat

macOS 注意

目前你必须在 XIB 中设置 FLEView,而不是在代码中设置(以后会改)。如下:

  • 拖入一个 OpenGL 视图
  • 修改类型为 FLEView.
  • 选中 Double Buffer 选项. 如果你的视图没有被绘制出来,可能是因为忘记这个步骤.
  • 选中 Hi-Res Backing 支持选项. 如果在高 DPI 显示器上只显示部分程序,那么可能是因为忘记这个步骤。
正文完
 0