flutter版本控制工具 `FVM`

article/2025/10/22 16:03:35

文章目录

  • FVM 切换VSCode 的Flutter版本
    • 在windows上安装fvm
      • 方法一:先安装 choco
        • 检查安装是否成功
    • 常用指令
    • 接下来安装fvm
    • 方法二:pub方式安装 fvm
      • VSCode配置
      • 安卓studio
    • Flutter版本切换
    • 项目
      • 缓存目录
        • 列出配置
      • 设置缓存路径
      • 配置
    • 常用命令
    • 安装
    • 删除
    • 列出
    • releases
    • doctor
      • 路由
  • 配置全局版本
  • 项目多个选项
    • 针对不用flavor版本
    • 切换flavor版本
    • 查看flavor
    • 常见问题
      • 运行 FVM 时内核二进制文件无效或 sdk 哈希无效
      • PATH 中 Windows 的环境变量顺序
      • 找不到命令“pub”

大家好。我是坚果,我的公众号“坚果前端”
在这里插入图片描述

今天给大家介绍flutter版本控制工具 FVM

FVM 切换VSCode 的Flutter版本

随着flutter2.5.0的发布,相信很多同学都是激动的心,颤动的手,想快速尝试一波,做一个吃螃蟹的人,本人也是曾怀揣着这样的心情,头脑一热的将本地的flutter版本更新到2.05.0了,螃蟹吃完了,但是回到项目(公司项目采用的1.20.4)代码时,一打开,一片红,各种报错,我滴个乖乖~,又赶紧将版本回退到之前的稳定版本!

本着又想吃螃蟹,又想兼顾公司项目代码的想法,还是幼稚了,幸运的是,https://github.com/leoafarias/fvm 就能满足需求。在这里介绍一款flutter的版本管理神器 FVM,安装方式我给了两种,

chocochoco

FVM 可以在用户本机通过安装多个Flutter SDK版本,来为项目指定Flutter版本,或者快速在各个版本间切换,解决只有一个Flutter版本对不同项目兼容问题。

在windows上安装fvm

方法一:先安装 choco

官网:

https://chocolatey.org/

powershell 管理员身份运行命令行

不会的话,先打开一个powershell 窗口 ,然后右击任务栏,选择第一个,即可进入

image-20211102144556391

输入命令

  • cmd 安装
    直接拷贝执行即可,注意需要管理员身份运行
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
  • PowerShell 安装
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

检查安装是否成功

choco -v
  • 更新
choco upgrade chocolatey

可以安装成功

常用指令

choco list -li 查看本地安装的软件

choco search nodejs 查找安装包

choco install sublimetext3 下载

choco uninstall sublimetext3 卸载

choco upgrade sublimetext3 更新(update)

image-20211102144643292

接下来安装fvm

 choco install fvm

方法二:pub方式安装 fvm

pub global activate fvm

可以设置系统环境变量、

1.语法示例

image-20211102170024588

VSCode配置

现在我们将在这里配置 VS Code,我们将看到如何完成 VS Code 过程。

目录的路径,我们可以在代码中看到 FVM 安装的所有版本

这里提示在settings.json添加以下内容。

{"dart.flutterSdkPaths": ["D:/fvm/versions""]
}

用fvm命令,输入fvm出现如下信息,即配置成功,可以开始使用fvm管理了。

image-20211102142541128

为了获得上面的路径,我们将执行 fvm list 命令

// copy this path
Versions path:  $YOUR_PATH/fvm/versions

输入 cmd + shift + p 来使用 sdk,然后输入 change sdk,现在你可以选择你喜欢的版本了。

image-20211102144908030

初始化项目

$ fvm flutter create .

安卓studio

  1. 前往Languages & Frameworks -> Flutter或搜索 Flutter 并更改 Flutter SDK 路径。
  2. 将fvm 符号链接的***绝对***路径复制到您的项目根目录中。例子:/absolute-path/.fvm/flutter_sdk
  3. 应用更改。
  4. 重新启动 Android Studio 以查看应用的新设置。

您现在可以使用所选版本的 Flutter 运行和调试。

Flutter版本切换

版本切换前先用fvm list 检查一下本地版本

Cache Directory:  D:\fvm\versions2.5.12.5.02.2.31.20.4

image-20211102143654846

然后使用fvm list切换你想要的版本

PS E:\work\dc-client\app_proj> fvm use 1.20.4Project now uses Flutter [1.20.4]

image-20211102142958930

其他的设置同电脑终端的设置一样,可以参考:github.com/leoafarias/…

项目

FVM 将在您的项目中创建一个相对符号链接.fvm/flutter_sdk到所选版本的缓存。将其添加到您的.gitignore

.fvm/flutter_sdk.gitignore.fvm/flutter_sdk

缓存目录

您可以通过设置环境变量来配置fvm缓存目录FVM_HOME。如果没有设置,将使用默认的fvm路径。您还可以通过--cache-path在配置上设置来更改目录。见下文

列出配置

fvm config

设置缓存路径

fvm config --cache-path <CACHE_PATH>

配置

您可以在 FVM 上更改一些配置。在 CLI 上设置的所有设置都与 Sidekick(GUI) 兼容

常用命令

一般需要查看命令的使用说明,都会通过 --help 查看。

$ fvm --helpFlutter Version Management: A cli to manage Flutter SDK versions.Usage: fvm <command> [arguments]Global options:-h, --help       Print this usage information.    --verbose    Print verbose output.Available commands:  config     Set configuration for FVM  flutter    Proxies Flutter Commands  install    Installs Flutter SDK Version  list       Lists installed Flutter SDK Version  releases   Lists Flutter SDK releases.  remove     Removes Flutter SDK Version  use        Which Flutter SDK Version you would like to use  version    Prints the currently-installed version of FVMRun "fvm help <command>" for more information about a command.
  • config:对 fvm 进行配置
  • flutter:对 Flutter 的命令进行代理
  • install:安装 Flutter 版本
  • list:查看已安装的 Flutter 版本
  • releases:查看 Flutter sdk 都有哪些发布的版本
  • remove:删除已安装的某个 Flutter 的版本
  • use: 选择你要使用的版本
  • version: 查看安装 fvm 的版本

对于子命令的更多使用方法,我们可以通过 fvm help <command> 进行查看,比如:

$ fvm help useWhich Flutter SDK Version you would like to useUsage: fvm use [arguments]-h, --help      Print this usage information.    --global    Sets version as the global version.                Make sure Flutter PATH env is set to: /Users/oheroj/fvm/default/bin    --force     Skips command guards that does Flutter project checks.Run "fvm help" to see global options.
  • -h,–help :可以查看更多使用信息
  • –global: 将这个版本设置为全局版本
  • –force: 跳过执行 Flutter 项目检查命令

命令学习的套路就是多用 help。其他命令读大家可自行学习。

安装

安装 Flutter SDK 版本。使您能够安装 Flutter 版本或频道。

Usage:    fvm install - # 安装在项目配置中找到的版本    fvm install {version} - # 安装特定版本 Option:    -h, --help          Print this usage information.    -s, --skip-setup    Skips Flutter setup after install

删除

删除 Flutter SDK 版本。将影响依赖于该版本 SDK 的任何项目。

Usage:    fvm remove {version}Option:    -h, --help     Print this usage information.        --force    Skips version global check.

列出

列出已安装的 Flutter SDK 版本。还将打印 FVM 使用的缓存目录。

Usage:    fvm listOption:    -h, --help     Print this usage information.xxxxxxxxxx List#Usage:    fvm listOption:    -h, --help     Print this usage information.

releases

查看所有可供安装的 Flutter SDK 版本。

Usage:    fvm releasesOption:    -h, --help     Print this usage information.

doctor

显示有关环境和项目配置的信息。

Usage:    fvm doctorOption:    -h, --help     Print this usage information.

路由

代理命令时,FVM将按以下顺序查找 sdk。

  1. 项目
  2. 父级 目录
  3. 全局(通过 FVM 设置)
  4. 环境(Flutter 版本配置于PATH

配置全局版本

fvm global {version}

项目多个选项

您可以为每个项目环境或发布类型配置多个 Flutter SDK 版本。FVM 遵循 Flutter 的相同约定并将其称为flavors.

它允许您为您的项目创建以下配置。

{  "flutterSdkVersion": "stable",  "flavors": {    "dev": "beta",    "staging": "2.0.3",    "production": "1.22.6"  }}

针对不用flavor版本

要为特定版本选择 Flutter SDK 版本,您只需使用该use命令。

fvm use {version} --flavor {flavor_name}

切换flavor版本

将获取为flavor配置的版本并设置为项目版本。

fvm flavor {flavor_name}

查看flavor

列出所有配置的口味:

fvm flavor

常见问题

运行 FVM 时内核二进制文件无效或 sdk 哈希无效

发生这种情况的原因有几个。但是这意味着 FVM 快照与安装的 Dart 版本不兼容。

请执行以下操作:

  1. 在 Windows 上,请确保您的 env 变量按[PATH 中 Windows 的环境变量]顺序所述的顺序排列。
  2. dart pub global deactivate fvm
  3. dart pub global activate fvm

PATH 中 Windows 的环境变量顺序

Flutter 内置了 Dart。因此,当单独运行 Dart 和 Flutter 时,您会发现一些冲突。这是我们发现的正确依赖顺序以避免出现问题的建议。

  1. 全局包的发布缓存
  2. Dart SDK(如果安装在 Flutter 之外)
  3. 颤振SDK

它应该是这样的。

C:\Users<用户>\AppData\Roaming\Pub\Cache\bin

C:\src\flutter\bin\cache\dart-sdk\bin

C:\src\flutter\bin

找不到命令“pub”

如果您得到Command 'pub' not found,请确保附加export PATH="$PATH:/usr/lib/dart/bin"到您的~/.bashrc(每次打开 bash shell 时都会重新启动)或~/.profile(仅在登录时读取)文件。

choco list -li 查看本地安装的软件

choco search nodejs 查找安装包

choco install sublimetext3 下载

choco uninstall sublimetext3 卸载

choco upgrade sublimetext3 更新(update)

参考:

https://fvm.app/docs/getting_started/overview


http://chatgpt.dhexx.cn/article/cajGyFY5.shtml

相关文章

flutter 版本控制fvm

1先安装 choco powershell 管理员身份运行 不会的话&#xff0c;先打开一个powershell 窗口 &#xff0c;然后右击任务栏&#xff0c;选择第一个&#xff0c;即可进入 输入命令 Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::Securi…

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

随着flutter2.0的发布&#xff0c;相信很多同学都是激动的心&#xff0c;颤动的手&#xff0c;想快速尝试一波&#xff0c;做一个吃螃蟹的人&#xff0c;本人也是怀揣着这样的心情&#xff0c;头脑一热的将本地的flutter版本更新到2.0了&#xff0c;螃蟹吃完了&#xff0c;但是…

官方蓄力已久,FVM虚拟机将使IPFS激励层生态迎来加速爆发期?

VM(Virtual Machine)指虚拟机,简单来说就是智能合约的执行引擎。 FVM指IPFS激励层公链上的虚拟机。 10月27日,胡安在万向峰会上做主题演讲时提及FVM,将社区内对于FVM的讨论推上了新顶峰。IPFS激励层官方对虚拟机的部署由来已久,社区方面也在积极讨论,此前在IPFS激励层周年…

FVM初启,Filecoin生态爆发着力点在哪?

Filecoin 小高潮 2023年初&#xff0c;Filecoin发文分享了今年的三项重大变更&#xff0c;分别是FVM、数据计算和检索市场的更新&#xff0c;这些更新消息在发布后迅速吸引了市场的广泛关注。 特别是在3月14日&#xff0c;Filecoin正式推出了FVM&#xff0c;这一变革使得Filec…

一篇弄懂 offsetWidth、offsetHeight、offsetleft、offsetTop和offsetParent的区别!(1)

快速理解offset之间的区别 1.offsetWidth与offsetHeight2.offsetParent3.offsetleft、offsetTop 以下代码均在Chrome浏览器中测试 1.offsetWidth与offsetHeight 1.offsetWidth&#xff1a;元素的布局宽度。   2.offsetHeight&#xff1a;元素的布局高度。   offsetWidth、o…

搞清楚 clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop

网页可见区域高&#xff1a;document.body.clientHeight 网页正文全文高&#xff1a;document.body.scrollHeight 网页可见区域高&#xff08;包括边线的高&#xff09;&#xff1a;document.body.offsetHeight 网页被卷去的高&#xff1a;document.body.scrollTop 屏幕分辨率…

使用TS中元素使用offsetHeight,offsetTop,offsetLeft报错

使用ts后&#xff0c;可以使用scroll家族和client家族&#xff0c;但使用offset家族会报错但也能运行 报错 类型“Element”上不存在属性“offsetHeight” 原因&#xff1a;ts中Element类型上没有定义offsetHeight&#xff0c;解决如下&#xff1a;通过as HTMLDivElement解决…

彻底搞懂offsetHeight,clientHeight,scrollHeight,scrollTop,offsetTop

offsetHeight和clientHeight都是获取dom元素自身的高度的&#xff0c;它们之间的区别在于&#xff1a; offsetHeight&#xff1a;获取的高度除了自身高度外&#xff0c;还包含了padding和border clientHeight&#xff1a;获取的高度除了自身高度外&#xff0c;还包含了padding …

正文内容过长时,offsetHeight的获取和监听变化

正文内容过长时&#xff0c;超过4行隐藏&#xff0c;点击全部展开&#xff0c;可视高度&#xff08;可见高度&#xff09;offsetHeight的获取和监听变化_无围之解的博客-CSDN博客 核心逻辑代码 mounted() {this.$nextTick(() > {this.h1 this.$refs.div11.offsetHeight;});…

offsetHeight及其他

网页可见区域宽&#xff1a;document.body.clientWidth 网页可见区域高&#xff1a;document.body.clientHeight 网页可见区域宽&#xff1a;document.body.offsetWidth (包括边线的宽) 网页可见区域高&#xff1a;document.body.offsetHeight (包括边线的宽) 网页正文全文宽&a…

clientHeight offsetHeight scrollHeight offsetTop scrollTop

文章目录 各属性详解实现 offsetParent、offsetLeft/offsetTop深度剖析element.offsetParent定义祖先元素中不存在定位元素webkit内核、Firefox下的特殊情况 element.offsetWidth / element.offsetHeight定义 element.offsetLeft / element.offsetTop定义element在正常文档流中…

div之各种高度篇-offsetHeight、clientHeight、scrollHeight、 offsetHeight等等

资历尚浅,真的记不住这些花里胡哨的高度宽度、但是又经常要用到,头大 以下都是自己的理解,如果有误可以提醒下谢谢~ 以上图div为例子 一、offsetHeight = height + border + padding = 342 (返回不带px的数值) 二、clientHeight = height + padding = 340 (返回不…

关于offsetTop与offsetHeight的区别以及使用方法

offsetTop和offsetHeight是设置一个元素的位置和获取圆度大小经常会使用的参数&#xff0c;下面具体讲一下他们的区别于联系&#xff1a; 例如obj为html的一个元素对象&#xff0c; obj.offsetTop指的是obj距离上方或者父级元素&#xff08;position非static&#xff09;的位…

clientHeight和offsetHeight

clientHeight&#xff1a;包括padding但不包括border、水平滚动条、margin的元素的高度。对于inline的元素这个属性一直是0&#xff0c;单位px&#xff0c;只读元素。 offsetHeight&#xff1a;包括padding、border、水平滚动条&#xff0c;但不包括margin的元素的高度。对于in…

PHP 简单封装返回JSON数据接口

前言 本文使用 php 来做一个简单的接口&#xff0c;客户端传入数据&#xff0c;该接口返回 JSON 格式数据。 api.php <?php/* * (PHP简单封装JSON数据接口) * param integer $code 状态码 * param string $message 提示信息 * param array $data 数据 * return json(str…

PHP微信支付接口开发

在开始之前先看下功能 然后选择刷卡支付 输入手机微信钱包的授权码&#xff0c;成功运行 方法步骤&#xff1a; 需要先下一个DEMO&#xff0c;下DEMO的地方有两个&#xff1a; 一个是微信官方开发者文档地址 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter11_1…

Shopify 全套接口开发,产品上传、订单检索、自动履行【PHP接口】开发

PHP 接口: 以下接口为基础实现接口,可以自由调用。 以下基础方法实现了: 产品的自动发布,将产品直接发布到店铺中。 订单的自动检索,将店铺中需要履行的订单全部拉下来。 订单的自动履行(发货),将运单号同步到店铺后台发货。 产品上传推荐使用CSV 方式,即将多个产品…

人人都是接口开发大师,这个开源项目花5分钟就可以开发一个API接口

PhalApi开源接口框架 读音&#xff1a;派框架&#xff0c;官网&#xff1a;https://www.phalapi.net/ PhalApi是一个PHP轻量级开源接口框架&#xff0c;致力于快速开发接口服务。支持HTTP/SOAP/RPC等协议&#xff0c;可用于搭建接口/微服务/RESTful接口/Web Services。承诺永…

php API接口入门

1.简述: api接口开发,其实和平时开发逻辑差不多;但是也有略微差异; 平时使用mvc开发网站的思路一般是都 由控制器 去 调用模型,模型返回数据,再由控制器把数据放到视图中,展现给用户; api开发是:使用控制器 去调用模型,模型返回数据,在有控制器 输出 json格式字符…

php开发之接口的使用

继承简化了对象&#xff0c;类的创建&#xff0c;增加了代码的可重性&#xff0c;但php只支持单继承&#xff0c;如果要实现多重继承&#xff0c;就要使用多个接口。 接口通过interface关键字来声明&#xff0c;并且类中只能包含未实现的方法和一些成员变量&#xff0c;格式如…