Flutter Desktop 现状

截止2020/05/01,Flutter Desktop还处于alpha版本,还没有Ready for Producation。但是相比去年的版本,已经稳定了不少,也不会有太大的Braking Change。就三个Desktop Platform来说,macOS是最成熟、支持度最高的。

准备

  1. 切换到master分支或者dev分支
  2. 运行flutter upgrade
  3. 运行flutter config --enable-macos-desktop,开启支持macOS编译
  4. Done!!!

创建项目

1
2
3
mkdir sample
cd sample
flutter create .

运行预览

可以看到,整个创建过程还是比较简单的,也没有什么坑。

Mobile库的兼容性

pin_input_text_field — 纯Dart实现

1
2
dependencies:
  pin_input_text_field: ^3.0.1

兼容性: 💯

loading_indicator — 纯Dart实现

1
2
dependencies:
  loading_indicator: ^1.1.0

兼容性:💯

path_provider — 基于Method Channel实现

1
2
dependencies:
  path_provider: ^1.6.5

兼容性:💯不支持移动端特有的文件夹,比如External Storage,但是都会有相应的错误提示。

结论

总的来说,如果基于纯Dart实现的库,兼容性都是没问题的,但是如果是基于平台的库还是需要额外兼容。

Flutter Desktop Plugins

Plugin列表

  • Desktop plugins 桌面端独有plugins
    • color_panel 颜色盘选择器
    • file_chooser 文件选择器
    • menubar 菜单栏控制
    • window_size 窗口大小
  • flutter_plugins 移动端扩展plugins
    • path provider 路径
    • url launcher url启动

现在桌面端的Plugins生态还是比较荒芜阶段,也是因为目前还在Alpha阶段,Windows和Linux下面Plugin的支持也不是很好。

Github Actions❤️Flutter Desktop

Github Actions是Github又一个真香功能,可以自动化开发、构建、测试和部署,支持多平台 Windows、macOS 和 Linux,支持多语言 Node.js、Python、Java、PHP、C/C++、.NET、Android 和 iOS,也支持容器或虚拟机。重点是免费!!! 免费!!! 免费!!!

目前Github官方对Actions并发任务有一定限制,但是作为日常开源或者个人开发丝毫不影响。

GitHub 计划 同时运行的作业总数 MacOS 作业同时运行的最大数量
免费 20 5
Pro 40 5
团队 60 5
企业 180 50

配置Actions

Flutter Desktop项目配置的关键点有几个

  1. Flutter环境配置
  2. 开启Flutter Desktop支持
  3. Pub Dependency同步
  4. 运行测试代码
  5. 生成release包
  6. 发布生成物

想通这几个关键点,actions写起来就很快了。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
name: Flutter Desktop Build CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:
    runs-on: macos-latest
    steps:
    - uses: actions/checkout@v2
    - uses: subosito/flutter-action@v1
      with:
        channel: 'dev'  
    # config enable macos
    - run: flutter config --enable-macos-desktop
    - name: Install dependencies
      run: flutter pub get
    # 运行测试
    - name: Run tests
      run: pub run test
    # 编译release版本
    - name: Build products
      run: flutter build macos -v --release
    # 压缩app
    - name: Compress artifacts
      run: cd build/macos/Build/Products/Release && tar -jcvf out.tar.bz2 out.app
    # 上传生成物
    - name: Archive production artifacts
      uses: actions/upload-artifact@v1
      with:
        name: out.tar.bz2
        path: build/macos/Build/Products/Release/out.tar.bz2

最后可以在Actions可以看到生成物

如果需要自动发布到Repo的Release,可以改一下触发规则,然后生成物后面再加上一段就行,大家可以自行Google搜索。

参考

Flutter Official site
Github Actions site