Flutter程序员

GO Flutter Desktop Mac版小白体验

2019-07-05  本文已影响156人  吉原拉面

   go-flutter-desktop 嗯,这个项目也是已经存在很久了,使用GoGLFW 技术实现。因为前两天在大佬的带领下体验了官方的desktop项目,大家一般都会将官方项目和go-flutter来进行对比。
   虽然这个项目叫go-flutter-desktop,但是开发还是使用的Dart语言来写Flutter啦(平台化插件需要使用go语言来调用MethodChannel),这个项目只不过是对Flutter暴露的 Flutter's Embedding API 进行了实现,使之能够运行在Windows, MacOS和 Linux而已。简单点说就是,GO语言负责自定义 Flutter Engine Embedders使Flutter可以运行在其他平台 ,GLFW负责渲染工作。
   在Mac上编译起来依然很简单,没什么坑。

准备工作

   你需要安装go环境,以及hover工具(编译打包运行都使用这个hover)

Step 1

   使用brew install go命令来安装go环境,go version查看go版本基金可以判断是否安装成功了:


   然后打开.bash_profile配置环境变量,
export GOPATH =/Users/yumi/go
export PATH=$PATH:$GOPATH/bin

   GOPATH的值对应于go env命令行中的GOPATH

Step 2

   使用go get -u github.com/go-flutter-desktop/hover命令安装hover工具,默认会安装到GOPATH/bin目录里面,上边配置的第二个环境变量就是为了能够方便使用hover命令。安装完成后输入hover -h检查是否安装成功:

运行demo

  我们可以clone官方example:https://github.com/go-flutter-desktop/examples.git ,然后进入项目目录(这里以pointer_demo为例),拉取pub依赖后,hover run就搞定啦:

cd flutter-examples/pointer_demo
flutter pub get
hover run

将已有项目更改为desktop项目

  因为涉及到平台,纯Dart项目可以使用命令行hover init [project] [flags]一键更改为desktop项目。以官方gallery项目为例:

cd flutter_gallery
flutter pub get
hover init /Users/yumi/Documents/yumi/demo/flutter/flutter_gallery
hover run

  这里注意,hover init 的目录,官方建议是链接到 git 服务,我这边是测试的所以没这么写,建议类似这样:hover init github.com/my-organization/simpleApplication(目录随便编一个也行,不一定要是github真实存在的项目,我这边写本地路径init也是OK的)。

hover init requires a project path. This is usualy the path for your project on github or a self-hosted git service. If you are unsure, just make something up, it can always be changed later.

  第一次运行会报错:

Target file "lib/main_desktop.dart" not found.

  这是因为go-flutter的默认入口文件是lib/main_desktop.dart,所以我们新建一个main_desktop.dart文件,把``main.dart```里面的东西复制进去即可:

import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';

import 'gallery/app.dart';

void main() {
  debugDefaultTargetPlatformOverride = TargetPlatform.fuchsia;
  runApp(const GalleryApp());
}

  记得指定debugDefaultTargetPlatformOverride = TargetPlatform.fuchsia;

关于插件

Question 1:是否可以使用pub上的库?

  同官方desktop,纯Dart的库是可以使用的;平台化插件类似于Flutter,使用MethodChannel通信(go语言编写)

Question 2:如何编写插件?

  create-a-plugin这里介绍了如何创建一个插件;plugins这里有官方的插件例子。
  插件目录官方建议放在 GOPATH/src/github.com/目录下。具体看低调大佬的文章:创建并编写插件

Question 3:插件如何使用?

  可以本地引用 or 发布到github给其他人使用。具体依然看低调大佬的文章:发布插件

关于打包

  使用hover build命令可以在desktop/build目录下生成一个exec的Unix可执行文件(Mac下),双击可以打开App。不同的平台会生成不同的目录,desktop/build/outputs/linux or desktop/build/outputs/windows or desktop/build/outputs/darwin ,win平台可以直接生成exe文件,这点上来说还是比较方便的。
  在Mac平台下,从demo项目来看,这个产物其实就是个.app,你可以强行重命名成xxx.app,然后转化成.dmg文件即可。
  但是用法海大佬的项目实际测试打包的时候,直接改名并不可用,需要自己构建.app包,具体可以看低调大佬的文章: go 二进制程序打包为 mac app(dmg) ,建议还是自己构建.app包比较靠谱。

上一篇 下一篇

猜你喜欢

热点阅读