使用fvm,助力你吃上Flutter2

2,615 阅读2分钟

前言

脑袋一热,将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