Flutter Version Manager (FVM): Flutter的版本管理终极指南
- 文章信息 - Author: 李俊才 (jcLee95)
Visit me at: https://jclee95.blog.csdn.net
Email: 291148484@163.com.
Shenzhen China
Address of this article:https://blog.csdn.net/qq_28550263/article/details/136300307 my-website:http://thispage.tech/notes/flutter/FVM
https://bbs.huaweicloud.com/blogs/422586
【介绍】:在Flutter开发过程中,管理不同版本的Flutter SDK可能是一个挑战,尤其是当你同时在多个项目上工作,而这些项目又可能依赖于不同版本的Flutter。这里介绍一个解决方案:Flutter Version Manager (FVM)。

目 录
1. 概述 1.1 什么是FVM?
FVM是一个为Flutter开发的版本管理工具,它允许你在同一台机器上安装和使用多个Flutter版本。FVM提供了一种简单的方式来切换项目之间的Flutter版本,无需重新下载或配置。
1.2 为什么要使用FVM?总结起来,使用 Flutter Version Management(FVM)的主要优点包括版本隔离、快速切换和节省空间。
版本隔离
首先,版本隔离是 FVM 的一个关键优点。它允许为每个项目维护独立的 Flutter 版本,从而避免了不同项目之间可能出现的版本冲突问题。由于不同的项目可能依赖于不同的 Flutter 版本,版本隔离确保了项目之间的独立性,使得开发者可以根据项目的需要选择合适的 Flutter 版本进行开发和测试,而无需担心可能会因为版本不匹配而导致的问题。
快速切换
其次,FVM 提供了快速切换 Flutter 版本的能力。通过简单的命令,开发者可以在不同的项目之间快速切换 Flutter 版本。这种灵活性使得开发者可以轻松地适应不同项目的需求,而无需手动管理不同版本的 Flutter SDK,大大提高了开发效率和便捷性。
最后,FVM 可以节省空间。由于 FVM 允许共享相同版本的 Flutter SDK,并且只需下载一次即可在多个项目中使用,因此可以避免重复下载相同版本的 Flutter SDK,从而节省了存储空间。特别是对于那些需要频繁切换 Flutter 版本或者同时在多个项目中使用 Flutter 的开发者来说,这种节省空间的优势尤为显著,可以有效地减少磁盘占用和下载时间。
节省空间
FVM 的主要优点包括版本隔离、快速切换和节省空间。这些优点使得开发者可以更加灵活地管理和使用 Flutter SDK,提高了开发效率和项目的可维护性。
2. FVM的安装方法FVM 提供了多种安装方式,包括通过 pub、Homebrew 和 Chocolatey,让开发者可以根据自己的喜好和操作系统选择合适的安装方式。不论是哪种方式,安装完成后都可以方便地使用 FVM 来管理 Flutter 版本,提高开发效率和便捷性。
2.1 通过pub安装首先是通过 pub 安装。运行下面的命令:
dart pub global activate fvm
这个命令会从 Dart 包管理器 pub 获取最新版本的 FVM,并将其安装到全局环境中。一旦安装完成,你就可以在任何地方使用 FVM 命令了,从而方便地管理 Flutter 版本。
2.2 通过Homebrew安装其次是通过 Homebrew 安装。如果你使用 macOS,并且习惯使用 Homebrew 进行软件包管理,那么可以使用以下命令来安装 FVM:
brew tap leoafarias/fvm
brew install fvm
这个命令会将 FVM 添加到 Homebrew 的源中,并安装到你的系统中。通过 Homebrew 安装的方式,你可以享受到 Homebrew 提供的便捷性和管理优势。
2.3 通过Chocolatey安装最后是通过 Chocolatey 安装。对于 Windows 用户,可以使用 Chocolatey 进行软件包管理,并通过以下命令安装 FVM:
choco install fvm
这个命令会从 Chocolatey 的软件源中获取最新版本的 FVM,并将其安装到你的系统中。通过 Chocolatey 安装,你可以快速方便地在 Windows 环境中使用 FVM,从而实现对 Flutter 版本的管理和切换。
2.4 在IDE中使用FVMFVM还可以与IDE(如Android Studio)集成,通过配置Flutter SDK路径为.fvm/flutter_sdk,可以确保IDE使用FVM管理的Flutter版本。
3. FVM的基本用法解析安装了Flutter Version Manager (FVM)之后,你将能够通过一系列命令来管理Flutter SDK的不同版本。这些命令不仅让版本管理变得简单,还支持高度自定义的项目构建配置。下面是如何使用这些基本命令的详细指南。
3.1 安装Flutter版本要安装特定版本的Flutter SDK,可以使用fvm install命令。这个命令允许你指定一个特定的版本号或者渠道名(如stable, beta, dev, master)。
fvm install 3.16.9
或者,如果你想安装beta渠道的最新版本:
fvm install beta
3.2 切换Flutter版本
安装了Flutter的不同版本后,你可以使用fvm use命令为当前项目指定要使用的Flutter版本。这个命令会在项目目录下创建一个.fvm文件夹,其中包含指向所选Flutter版本的符号链接。
为当前项目使用特定版本:
fvm use 2.2.0
如果你想将某个版本设置为全局默认版本,可以添加–global标志:
fvm use 2.2.0 --global
3.3 列出已安装版本
要查看已经通过FVM安装的所有Flutter版本,可以使用fvm list命令。这个命令会列出所有已安装的版本,并且显示当前项目正在使用的版本。
fvm list

如果你想删除已经安装的某个Flutter版本,可以使用fvm remove命令。这个命令会从你的机器上移除指定的Flutter版本,释放空间。
fvm remove 2.2.0
3.5 项目Flavors
FVM支持项目flavors,这意味着你可以为不同的构建配置指定不同的Flutter版本。这在你需要为不同的环境(如开发、测试和生产)使用不同版本的Flutter时非常有用。
要为特定flavor指定Flutter版本,可以在fvm use命令中使用–flavor选项:
fvm use 2.2.0 --flavor dev
这将为开发flavor设置Flutter版本为2.2.0。
通过这些基本命令,FVM提供了一种灵活而强大的方式来管理Flutter项目的版本。无论是在多个项目之间切换,还是为不同的构建配置指定特定版本,FVM都能简化这一过程。
3.6 配置和高级功能FVM提供了一些配置选项,例如设置缓存路径,以及一些高级功能,如使用自定义Flutter版本或特定的git提交。这些功能使得FVM成为一个强大而灵活的工具,适用于各种复杂的开发场景。
4. 结论FVM是一个强大的工具,可以帮助Flutter开发者更有效地管理不同版本的Flutter SDK。无论你是在多个项目之间切换,还是需要测试即将发布的Flutter版本,FVM都能提供帮助,使得版本管理变得简单和高效。
相关文章:
Flutter Version Manager (FVM): Flutter的版本管理终极指南
Flutter笔记 Flutter Version Manager (FVM) - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netEmail: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/article/details/136300307 my-websit…...
Docker技术概论(3):Docker 中的基本概念
Docker技术概论(3) Docker 中的基本概念 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://…...
死记硬背spring bean 的生命周期
1.bean的生命周期 我们平常经常使用类似于new Object()的方式去创建对象,在这个对象没有任何引用的时候,会被gc给回收掉。而对于spring而言,它本身存在一个Ioc容器,就是用来管理对象的,而对象的生命周期也完全由这个容…...
海外网红营销策略:如何将红人粉丝有效转化为品牌忠实粉丝?
在数字化时代,社交媒体已经成为品牌推广和营销的不可或缺的一部分。随着海外网红营销的崛起,品牌们纷纷将目光投向这个新兴的营销领域。然而,仅仅依赖网红的影响力来达到品牌传播的效果是不够的,更为重要的是如何将网红的粉丝转化…...
java之Bean对象
1. 什么是Bean? Bean被实例化的,是被Spring框架所管理的Java对象。 Spring容器会自动完成Bean的实例化。将所创建的的Bean自动注入到Ioc容器中以供调用。 spring框架中 IOC容器中管理的对象就是Bean对象 2. 第三方bean Bean 因为第三方bean࿰…...
Flink——芒果TV的实时数仓建设实践
目录 一、芒果TV实时数仓建设历程 1.1 阶段一:Storm/Flink JavaSpark SQL 1.2 阶段二:Flink SQLSpark SQL 1.3 阶段三:Flink SQLStarRocks 二、自研Flink实时计算调度平台介绍 2.1 现有痛点 2.2 平台架构设计 三、Flink SQL实时数仓分…...
卸载云服务器上的 MySQL 数据库
执行以下命令以停止 MySQL 服务: sudo service mysql stop执行以下命令以彻底卸载 MySQL: sudo apt-get remove --purge mysql-server mysql-client mysql-common sudo apt-get autoremove sudo apt-get autoclean 这将删除 MySQL 数据库服务器、客…...
AUTOSAR SPI详解
1.SPI通信 1)SPI通信脚 SCLO:串行时钟sclk。MTSR:主向从方向数据MTSR(主发送从接收)。MRST:从向主方向数据MRST(主接收从发送)。SLSO:从选择信号SLS,支持16路片选控制。 2) SPI状态机 2.SPI通信波形 在主…...
SpringBoot快速入门(黑马学习笔记)
需求 需求:基于SpringBoot的方式开发一个Web应用,浏览器发起请求/hello后,给浏览器返回字符串"Hello World~"。 开发步骤 第一步:创建SpringBoot工程项目 第二步:定义HelloController类,添加方…...
压力测试工具Jmeter的下载与使用
1、进入官网下载Jmeter https://jmeter.apache.org/ 国内镜像(下载的慢的话可以用国内镜像下载) https://mirrors.cloud.tencent.com/apache/jmeter/binaries/ 2、跳转到下载页面 3、根据不同系统下载相应版本的Jmeter压缩包,Linux系统下载…...
kubectl 陈述式资源管理方法
目录 陈述式资源管理方法 项目的生命周期 1.创建kubectl create命令 2.发布kubectl expose命令 service的4的基本类型 查看pod网络状态详细信息和 Service暴露的端口 查看关联后端的节点 编辑 查看 service 的描述信息 编辑在 node01 节点上操作,查看…...
从 iOS 设备恢复数据的 20 个iOS 数据恢复工具
作为 iPhone、iPad 或 iPod 用户,您可能普遍担心自己可能会丢失存储在珍贵 iOS 设备中的所有宝贵数据。数据丢失的原因多种多样,这里列出了一些常见原因: 1. iOS 软件更新 2. 恢复出厂设置 3. 越狱 4. 误操作删除数据 5. iOS 设备崩溃 …...
cpp基础学习笔记03:类型转换
static_cast 静态转换 用于类层次结构中基类和派生类之间指针或者引用的转换。up-casting (把派生类的指针或引用转换成基类的指针或者引用表示)是安全的;down-casting(把基类指针或引用转换成子类的指针或者引用)是不安全的。用于基本数据类型之间的转换ÿ…...
H3C OSPF 外部路由引入实验
H3C OSPF 外部路由引入实验 实验拓扑 实验需求 按照图示配置 IP 地址R1,R2,R3 运行 OSPF 使内网互通,所有接口(公网接口除外)全部宣告进 Area 0;要求使用环回口作为 Router-id业务网段不允许出现协议报文…...
ARM简介
ARM:ARM是Advanced RISC Machine的缩写,意为高级精简指令集计算机。 英国ARM公司,2016年被软银创始人孙正义斥资320亿美元收购了。现在是软银旗下的芯片设计公司,总部位于英国剑桥,专注于设计芯片,卖芯片生…...
MySQL(基础篇)——事务
一.事务简介 事务是一组操作的集合,他是一个不可分割的单位,事务会把所有的操作作色一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 默认MySQL的事务是自动提交的,也就是说,…...
XGB-15:调参注意事项
参数调优是机器学习中的一门黑艺术,一个模型的最优参数可能取决于许多情境。因此,要为此提供全面的指南是不可能的。 了解偏差-方差权衡Bias-Variance Tradeoff 当能允许模型变得更加复杂(例如更深),模型具有更好的拟…...
蓝桥杯_定时器的基本原理与应用
一 什么是定时器 定时器/计数器是一种能够对内部时钟信号或外部输入信号进行计数,当计数值达到设定要求时,向cpu提出中断处理请求,从而实现,定时或者计数功能的外设。 二 51单片机的定时/计数器 单片机外部晶振12MHZ,…...
【跨境电商须知】FP独立站的特点和痛点有哪些?
无论是做独立站,还是做亚马逊,都有各自的难点。自己做独立站若要在跨境行业长足发展,既要知道FP独立站有什么特点,要清楚FP独立站的痛点并一一克服。 一、FP独立站的特点 与依赖第三方平台相比,拥有自己的域名、服务器…...
js 精确计算(解决js四则运算精度缺失问题)
js的小数的运算,可能会得到一个不精确的结果,因为所有的运算都要转换成二进制去计算,然而,二进制无法精确表示1/10。 var a 0.1 0.2; console.log(a); //打印结果:0.30000000000000004因此需要使用以下方法实现精确…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
