Flutter Version Manager (FVM): Flutter的版本管理终极指南

Flutter笔记
Flutter Version Manager (FVM)

- 文章信息 - 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中使用FVM

FVM还可以与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

在这里插入图片描述

3.4 删除Flutter版本

如果你想删除已经安装的某个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都能提供帮助,使得版本管理变得简单和高效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/412612.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

git push 总是需要输入密码或者个人访问令牌personal access token解决方案

文章目录 遇到问题解决方法 遇到问题 git push的时候总是需要输入密码或者个人访问令牌personal access token 解决方法 ChatGPT给出的解决方案,解决了我的问题。 如果在使用 git push 命令时总是需要输入个人访问令牌,这可能是因为您的 GitHub 账号…

CUDA编程 - 用向量化访存优化 - Cuda elementwise - Add(逐点相加)- 学习记录

Cuda elementwise - Add 一、简介1.1、ElementWise Add1.2、 float4 - 向量化访存 二、实践2.1、如何使用向量化访存2.1、简单的逐点相加核函数2.2、ElementWise Add float4(向量化访存)2.3、完整代码 一、简介 1.1、ElementWise Add Element-wise 操作…

27.HarmonyOS App(JAVA)可复用列表项的ListContainer

可复用列表项的ListContainer 简短的列表可以通过定向布局实现,但是如果列表项非常多,则使用定向布局就不再合适。如需要创建50个列表项的列表,那么用定向布局实现至少需要创建50个以上的组件了。然而,限于设备屏幕大小的限制,绝大多数组件不会显示在屏幕上,却会占据大量的内存…

CentOS 7.9.2009离线安装mysql 8.0客户端 (rpm包)

环境: #需求: 该服务器需要将csv文件入库到远端的mysql 服务器上。 CentOS Linux release 7.9.2009 (Core) 离线环境 ,需安装mysql客户端 8.0.27#下载地址 https://downloads.mysql.com/archives/community/#按此顺序安装 rpm -ivh mysql…

C++ //练习 9.16 重写上一题的程序,比较一个list<int>中的元素和一个vector<int>中的元素。

C Primer(第5版) 练习 9.16 练习 9.16 重写上一题的程序,比较一个list中的元素和一个vector中的元素。 环境:Linux Ubuntu(云服务器) 工具:vim 代码块 /**********************************…

AMEYA360 | 罗姆的EcoGaN™被台达电子Innergie品牌的45W输出AC适配器“C4 Duo”采用!

全球知名半导体制造商ROHM Co., Ltd.(以下简称“罗姆”)的650V GaN器件(EcoGaN™),被台达电子(Delta Electronics, Inc.,以下简称“台达”)Innergie 品牌的45W输出AC适配器(快速充电器)“C4 Duo” 采用。台达是基于IoT技术的绿色解决方案全球供应商。Inn…

AGI|教你用一部电影的时间训练个人专属Agent

目录 一、Agent如何工作? 二、Function Call 原理 三、开源模型工具调用微调 //Chat模型微调 //训练过程日志 //测试结果 //测试Tools 四、预训练模型微调 五、总结 Agent是一个超越简单文本生成的人工智能系统。它使用大型语言模型(LLM&#x…

CS_上线三层跨网段机器(完整过程还原)

以前讲过用cs_smb_beacon上线不出网机器,但是真实的网络拓扑肯定不止这么一层的网络! 所以我就来搭建一个复杂一点的网络环境!! 当然了,这三台电脑之间都是不同的网段,(但是同属于一个域环境&a…

MySQL数据库进阶第五篇(锁)

文章目录 一、锁的概述二、全局锁三、表级锁四、元数据锁(meta data lock, MDL)五、意向锁六、行级锁七、行锁(Record Lock)八、间隙锁(Gap Lock)九、临键锁(Next-Key Lock)十、锁总…

遇见数字孪生城市美好模样 国产GIS加速创新竞逐“新赛道”

在未来数字孪生城市中,每一座建筑、每一条道路、每一盏路灯、每一辆车,甚至每一个人,都有其对应的数字孪生体。这些数字孪生体在虚拟世界中形成了城市的细致模型,如同镜子一样,反映出城市的实时状态,同时也…

Datawhale-Sora技术原理分享

目录 Sora能力边界探索 Sora模型训练流程 Sora关键技术拆解 物理引擎的数据进行训练 个人思考与总结 参考 https://datawhaler.feishu.cn/file/KntHbV3QGoEPruxEql2c9lrsnOb

HTB pwn Dragon Army

逆向分析 程序使用了alloca函数扩大了栈区 此处可以泄露libc的地址 程序主要功能在下面 while ( 1 ){while ( 1 ){fflush(stdin);fflush(_bss_start);fprintf(_bss_start, "\n%sDragons: [%d/%d]%s\n\n", "\x1B[1;34m", v5, 13LL, "\x1B[1;37m"…

山海鲸可视化:数据分析师的明智之选

作为一名资深的数据分析师,我深知数据可视化在数据分析和决策制定中的重要性。在众多的数据可视化工具中,我最终选择了山海鲸可视化软件。本文就简单介绍几点我选择它的主要原因: 首先,山海鲸可视化软件提供了强大的数据整合能力…

MySQL-事务,properties文件解析,连接池

1.事务机制管理 1.1 Transaction事务机制管理 默认情况下是执行一条sql语句就保存一次,那么比如我们需要三条数据同时成功或同时失败就需要开启事务机制了。开启事务机制后执行过程中发生问题就会回滚到操作之前,相当于没有执行操作。 1.2 事务的特征 事…

sql-labs25-28a

一、环境 网上都有不过多阐述 二、sql-labs第25关 它说你的OR和and属于它,那就是过滤了OR和and 注入尝试 不用or和and进行爆破注入,很明显是有注入点的 ?id-1 union select 1,2,3-- 查看数据库 ok,此道题算是解了但是如果我们用了and了呢 ?id-1 and updatex…

消息中间件篇之Kafka-高性能设计

一、高性能设计 消息分区:不受单台服务器的限制,可以不受限的处理更多的数据。 顺序读写:磁盘顺序读写,提升读写效率。 页缓存:把磁盘中的数据缓存到内存中,把对磁盘的访问变为对内存的访问。 零拷贝&a…

C# 水排序 微信小游戏

来只 水排序谜题启发式搜索方法_水排序解法小程序-CSDN博客 大神的C语言转换成C# 语言,更多的请看原作者,这里直接贴C#代码 using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace ConsoleApp2 {class Pro…

SImpAl

output matrix M,Curriculum using w ( x t , f , h ) w(x_t, f, h) w(xt​,f,h) 辅助信息 作者未提供代码

想露一手Linux命令,掌握这20个够用了!

中午好,我的网工朋友。 想做好网工,除了路由交换,掌握Linux操作系统也是很重要的。 因为很多服务器上都是用的Linux系统,要和服务器机器交互,就要通过Linux的相关命令。 正在找工作的朋友,如果面试时&am…

thinkphp6定时任务

这里主要是教没有用过定时任务没有头绪的朋友, 定时任务可以处理一些定时备份数据库等一系列操作, 具体根据自己的业务逻辑进行更改 直接上代码 首先, 是先在 tp 中的 command 方法中声明, 如果没有就自己新建一个, 代码如下 然后就是写你的业务逻辑 执行定时任务 方法写好了…