**flutter-desktop-embedding**這個專案其實已經存在很久了,之前看文件什麼都沒有,小白表示完全不會編譯,最近發現官方終於更新readme了!!雖然文件依然簡陋,但是已經很友好了,配置對了,一句flutter run
專案就跑起來了。
當然,這並不是一個Google官方承認的專案,還沒有正式納入官方flutter,所以只能體驗體驗。而且暫時沒有看到文件說明怎麼打包,不知道有沒有大佬能研究下。
This is not an officially supported Google product.
Mac版是官方認為做的最成熟的版本,坑少,配置簡單,總的來說體驗還是不錯的,有外掛系統,感覺體驗比Web還要好。
準備工作
Step 1
首先請確保你的Flutter SDK是跑在master分支上的。我偷懶用了dev分支,果然報錯了,哈哈哈哈。所以master外的其他分支是會報錯的(報錯很長,就不貼全了,具體可以看這個issue:github.com/google/flut… ),怎麼切換分支請自行百度:
Build process failed
#0 throwToolExit (package:flutter_tools/src/base/common.dart:24:3)
#1 buildMacOS (package:flutter_tools/src/macos/build_macos.dart:67:5)
#2 MacOSDevice.startApp (package:flutter_tools/src/macos/macos_device.dart:78:1
#3 FlutterDevice.runHot (package:flutter_tools/src/resident_runner.dart:370:54)
#4 HotRunner.run (package:flutter_tools/src/run_hot.dart:253:39)
#5 RunCommand.runCommand (package:flutter_tools/src/commands/run.dart:430:37)
複製程式碼
如果你嫌切分支麻煩,可以參考低調大佬的這篇文章Flutter Desktop Mac版(一) 初探,為desktop專案單獨配置一份master分支的SDK,可以避免在同時開發Flutter專案和desktop專案時,將分支切來切去的困擾。
Step 2
開啟.bash_profile
檔案,新增環境變數export ENABLE_FLUTTER_DESKTOP=true
,請一定要配置這個,否則你在執行的時候,Flutter SDK只會識別手機裝置,不會識別你的系統,會報錯no device connected
。
如何執行demo
首先要注意,暫時沒有命令列可以新建專案,需要去Github下載官方demo flutter-desktop-embedding當殼。
clone完畢後,控制檯進入example
目錄,執行flutter run
命令,看到以下文字就表示執行成功了:
yumideMacBook-Pro:example yumi$ flutter run
Launching lib/main.dart on macOS in debug mode...
Building macOS application...
flutter: NAME Favorite
flutter: NAME Unfavorite
Syncing files to device macOS...
2,034ms (!)
? To hot reload changes while running, press "r". To hot restart (and rebuild state), press "R".
An Observatory debugger and profiler on macOS is available at: http://127.0.0.1:61427/_u3S3YtMF1c=/
For a more detailed help message, press "h". To detach, press "d"; to quit, press "q".
複製程式碼
支援hot reload,但是要注意暫時desktop專案只能執行在debug模式,即使你在命令列加了--release
並且執行成功了,你還是在debug模式。
使用什麼IDE開發
開發其實和寫Flutetr一樣,你可以用VS Code、IntelliJ、Android Studio,如果需要從IDE中啟動專案,需要做額外的配置:
- VS Code請在
settings.json
中新增dart.env 配置:
"dart.env": {
"ENABLE_FLUTTER_DESKTOP": true,
}
複製程式碼
- IntelliJ/Android Studio請進入設定頁面:Preferences | Appearance & Behavior | Path Variables ,新增以下變數: (但是我個人在Android Studio中新增了上述環境變數後,並沒有卵用。。。。)
關於外掛
Question 1:是否可以使用pub上的庫?
純Dart的庫是可以使用的,比如Flare
動畫庫,使用姿勢依然是在pubspec.yaml
中新增依賴就行:
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.0
flare_flutter: ^1.5.2
flare_dart: ^1.4.2
複製程式碼
測試的時候我試著用了flare的這個example:favorite,實際執行效果如圖:
Question 2:如何編寫外掛?
暫時依然是不支援命令列建立,但是官方說以後會支援命令列(flutter create -t plugin
)的,因此如果需要開發外掛,請去github下載殼兒:github.com/google/flut…
和Flutter外掛一樣,如果需要平臺定製,你需要一定的macos、linux和windows平臺開發知識,一個完整的非純Dart的外掛是需要lib、linus、macos、windows這四個包的:
Question 3:如何使用外掛
- 純Dart包可以使用pub依賴;
- 平臺外掛暫時需要使用path載入本地依賴,以官方的
file_chooser
外掛為例:
file_chooser:
path: ../plugins/file_chooser
複製程式碼
我們可以寫一個簡單的例子看下這個外掛的使用:
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
onPressed: () {
showOpenPanel((results, path) {
setState(() {
paths = path;
});
print('results: $results, path = $path');
});
},
child: Text('點我選擇檔案'),
),
Text('檔案路徑:$paths'),
],
),
複製程式碼
注意Mac使用平臺外掛需要pod版本1.6.1+,如果報錯請更新cocospod。如果同時用gem和homebrew裝過cocospod,可能會導致pod指向混亂,請用which pod命令檢視實際指向,然後使用對應的更新即可。