Flutter macOS desktop體驗-flutter打包GUI

574 阅读2分钟

前言

最近公司需要在不同渠道提供不同的包,滿足用戶來源渠道統計等等功能。

如果只有一兩個渠道還能夠下下指令build很快就好,如果需要打包的量很多複製貼上就搞昏頭了。

在Mac上可以使用shell script提前把腳本寫好,大量打包也會變容易些。

然而使用shell script還是需要敲指令,如果我做一個GUI用起來不就更方便更快速,甚至不需要是程序猿就可以大量打包!

開啟Flutter macOS desktop

下指令👇,就可以開啟macos桌面應用支持

flutter config --enable-macos-desktop

然後用flutter devices,檢查

C:\> flutter devices
1 connected device:
macOS (desktop) • macos  • darwin-arm64   • macOS 12.0.1 21A559 darwin-arm

之後新建flutter專案就會有MacOS的平台選項

new.png

移植腳本

為了在flutter運行shell script,我選擇process_run 安裝:

process_run: ^0.12.3+2

使用

初始化 建議每次使用Shell()都填寫workingDirectory,不容易出錯。

import 'package:process_run/shell.dart';

//Shell shell = Shell(workingDirectory: 目錄路徑);
Shell shell = Shell();

執行命令,可單行或多行,要注意的是多行每一行都是獨立的,不支援很多操作如迴圈等等,要使用迴圈的話,寫在flutter/dart裡。

await shell.run('flutter doctor');

await shell.run('''
dart --version
pub --version
''');

變更目錄,除了重新Shell()之外,還可以使用shell.push(),相當於棧堆概念的指令cd。

shell.popd()返回。

//cd directory
shell = shell.pushd("directory");
shell = shell.popd();

原專案設定獲取打包參數

我這指定key為CHANNEL

void main() {
  const channel =bool.hasEnvironment('CHANNEL') ? String.fromEnvironment('CHANNEL') : "";
  .
  .
  .
}

打包的指令👇

flutter build apk --dart-define=CHANNEL=渠道名字

如果有多個只要中間加入空格,👇也可用於配置多環境

flutter build apk --dart-define=ENVIRONMENT=指定環境 --dart-define=CHANNEL=指定曲道

現在只要結合上述內容就可以做出一個簡單的打包器了!!!

能力有限

我在想能否在打包器里添加Flutter SDK,非程序猿使用者的電腦就無需安裝flutter,可以直接對專案打包。

小弟我才疏學淺,不知道commend該怎麼下,能否做到?

望掘金大佬們指點!!