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

栏目: IOS · Android · 发布时间: 5年前

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

英文原文

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

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显示器上只显示部分程序,那么可能是因为忘记这个步骤。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Realm of Racket

Realm of Racket

Matthias Felleisen、Conrad Barski M.D.、David Van Horn、Eight Students Northeastern University of / No Starch Press / 2013-6-25 / USD 39.95

Racket is the noble descendant of Lisp, a programming language renowned for its elegance and power. But while Racket retains the functional goodness of Lisp that makes programming purists drool, it wa......一起来看看 《Realm of Racket》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换