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

英文原文linux

image

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

当前的情况

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

详细信息请参阅 源码仓库shell

重要提示:Flutter桌面API仍处于早期阶段,若有更改,恕不另行通知。不会提供API或ABI的向后兼容性。Flutter更新以后,全部使用了Flutter的项目的代码都须要作更新而且从新编译。

macOS系统

这是最成熟的桌面平台(出于一些缘由,它很是接近于咱们已经支持的iOS)。macos

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

Windows系统

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

预计,最终版本的shell APIs和当前实现的方式彻底不一样。工具

Linux

和Windows同样,当前 Linux shell 只是 GLFW 占位符。咱们想建立一个库,让开发能够任何部分嵌入Flutter,不管你使用GTK+, Qt, wxWidgets, Motif, 仍是其余任意工具包。可是咱们尚未肯定一个好方法。开发工具

插件

全部平台都支持编写插件(例如 flutter-desktop-embedding 这些插件),可是,目前依然不多有插件实际上具备桌面支持。ui

工具

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显示器上只显示部分程序,那么多是由于忘记这个步骤。
相关文章
相关标签/搜索