前言
腦袋一熱,將Flutter包升級到了2.0後,現有的工程一片通紅,好不容易把報錯解決了。
pub get之後,發現自己依賴的第三方庫沒有完成Null safety的適配工作,直接讓我淚流滿面。
不得不切回1.22.6版本,Flutter2乖乖教我做人。讓我回想起曾經iOS專案從Swift3.0升級到Swift4.0,那個難忘的夜晚。
於是尋思之前瞭解的到的flutter版本工具的使用——fvm。
本文僅僅是在Mac電腦上我自己使用fvm的一些記錄,有圖有命令列,算是有圖有真相吧。
另外,我是使用VSCode進行Flutter開發,fvm配置也是和VSCode相關的,所以使用Android Studio的童鞋可以繞路。
安裝fvm
通過brew安裝 fvm:
什麼?沒有安裝brew,對不起,這個不在本文的涉及範圍內。
命令列走起:
// 新增homebrew tap
brew tap xinfeng-tech/fvm
// 安裝 fvm
brew install fvm
複製程式碼
安裝成功之後,就是配置你的環境變數到指令碼工具中: 由於Mac的指令碼工具有 .bash 和 .zsh 兩個,一般預設的是 bash,具體切換,可以在這裡參看蘋果官網的切換方法:
可以通過預設終端檢視你載入的配置,看最後的-zsh
就說明我使用的是zsh配置啦
修改.zshrc檔案:
直接將.zshrc檔案拖到VSCode中,
將下面的命令新增到你的Shell檔案中進行配置即可
export PUB_HOSTED_URL=http://mirrors.cnnic.cn/dart-pub
export FLUTTER_STORAGE_BASE_URL=http://mirrors.cnnic.cn/flutter
export FVM_DIR="$HOME/.fvm"
source "/usr/local/opt/fvm/init.sh"
複製程式碼
值得注意的是PUB_HOSTED_URL
和FLUTTER_STORAGE_BASE_URL
你也許在之前就配置過,並不是http://mirrors.cnnic.cn/dart-pub
和http://mirrors.cnnic.cn/flutter
,而是https://pub.flutter-io.cn
和https://storage.flutter-io.cn
。
保持和你之前配置即可,可以避免沒有必要的pubspec.lock檔案更新
fvm的基本使用
檢視fvm的版本
fvm --version
複製程式碼
安裝不同的Flutter版本
下面兩個版本是我經常需要使用的版本
fvm install 1.22.6
fvm install 2.0.3
複製程式碼
檢視安裝的Flutter版本
fvm list
current => 2.0.3-stable
installed versions:
1.22.6-stable => 1.22.6
2.0.3-stable => 2.0.3
default => 2.0.3
latest => 2.0.3
複製程式碼
這個時候可以在你的根目錄下面看到這樣的資料夾和Flutter版本管理:
建議這個更改完了之後也修改flutter包的引用指向
# 這個是以前的指向,再下面的現在的指向,
#export PATH=/Users/season/flutter/bin:$PATH
export PATH=/Users/season/.fvm/current/bin:$PATH
複製程式碼
VSCode中的配置
一般使用VSCode進行Flutter程式設計的使用都會生成一個.vscode的資料夾,裡面存放著一些編寫與除錯該flutter工程的配置。如下圖所示:
找到settings.json檔案,如果沒有,自己新建一個同名檔案。
在裡面寫入下面的配置:
{
"dart.flutterSdkPaths": [
"/Users/season/.fvm/versions"
],
}
複製程式碼
然後點選VSCode右下角的版本,就可以進行切換了。當然你使用VSCode命令也是可以的,如下圖所示:
注意:很有可能你在settings.json完配置後,進行版本切換時會發現不僅僅有.fvm資料夾下的flutter版本切換,可能會有其他的路徑下的flutter版本切換,關閉VSCode,再重啟試試就好了。
這樣一來,我們就可以通過git分支管理和fvm的切換,做正常的Flutter開發和新版本的嘗試了。
參考文章: