使用fvm,助力你吃上Flutter2

season_zhu發表於2021-04-07

前言

腦袋一熱,將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,具體切換,可以在這裡參看蘋果官網的切換方法:

在 Mac 上將 zsh 用作預設 Shell

可以通過預設終端檢視你載入的配置,看最後的-zsh就說明我使用的是zsh配置啦

image.png

修改.zshrc檔案:

image.png

直接將.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_URLFLUTTER_STORAGE_BASE_URL你也許在之前就配置過,並不是http://mirrors.cnnic.cn/dart-pubhttp://mirrors.cnnic.cn/flutter,而是https://pub.flutter-io.cnhttps://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版本管理:

image.png

建議這個更改完了之後也修改flutter包的引用指向

# 這個是以前的指向,再下面的現在的指向,
#export PATH=/Users/season/flutter/bin:$PATH 
export PATH=/Users/season/.fvm/current/bin:$PATH
複製程式碼

VSCode中的配置

一般使用VSCode進行Flutter程式設計的使用都會生成一個.vscode的資料夾,裡面存放著一些編寫與除錯該flutter工程的配置。如下圖所示:

image.png 找到settings.json檔案,如果沒有,自己新建一個同名檔案。

在裡面寫入下面的配置:

{
    "dart.flutterSdkPaths": [
        "/Users/season/.fvm/versions"
    ],
}
複製程式碼

image.png

然後點選VSCode右下角的版本,就可以進行切換了。當然你使用VSCode命令也是可以的,如下圖所示:

image.png

注意:很有可能你在settings.json完配置後,進行版本切換時會發現不僅僅有.fvm資料夾下的flutter版本切換,可能會有其他的路徑下的flutter版本切換,關閉VSCode,再重啟試試就好了。

這樣一來,我們就可以通過git分支管理和fvm的切換,做正常的Flutter開發和新版本的嘗試了。

參考文章:

FVM - Mac上管理 Flutter 多版本的神奇

GitHub FVM

相關文章