Flutter 的 SDK 本质上就是个 Git 仓库,这在之前的文档中已经提及过。相关版本本质上就是 Git 标签 (tag),即通过切换到相应标签就可以切换对应的 Flutter 版本。
例如通过git checkout
命令切换标签,而后运行flutter doctor
等命令,就会自动更行到标签所对应的版本。如果 Flutter 发布了新版本,可通过git fetch
或git pull
命令将最新的内容拉取到本地,然后再切换到最新版本所在的标签。
版本命名规范和所在分支
这里的版本不仅包含稳定版本,还包含预发布版本。正式版本的标签通常命名为1.2.3
这样的格式,而预发布版本的标签通常包含额外的后缀名称,例如1.2.3-4.5.pre
。其中这个pre
就是prerelease
的缩写,是预发布的意思。
这些版本的标签分别位于不同的分支 (branch) 上,常见的分支有稳定分支stable
,和预发布分支beta
。Flutter 发展至今已经有非常多的版本,在查找版本标签时,建议先筛选相关的分支,这样找起来会更快一些。最新的稳定版通常位于stable
分支的最新位置,通过直接切换到stable
分支也可以更新到最新的稳定版。
更改版本后会自动下载资源
FlutterSDK 这个 Git 仓库并非所需资源的全部,安装好 SDK 后初次通过flutter doctor
或flutter --version
等命令检查时,会自动开始下载当前平台所需要的资源。在每次切换版本时也会进行这样的操作,因为这些资源与版本是相关的。
这些资源包括:对应版本的 DartSDK 和当前平台所需的资源文件。所谓的当前平台不仅包括这台电脑所对应的 Windows, macOS 或 Linux 这样的桌面端操作系统,也包括了所支持的 Android 或 iOS 虚拟机以及如果配置了 Chrome 或 Windows 上的 Edge 浏览器,还会下载网页开发所需要的相关资源。
这些资源通常会被存放在 FlutterSDK 所在仓库的bin/cache
目录下,这个目录是被 Git 忽略的,其中的内容由 Flutter 自动管理。
更新到最新版本的命令
通过flutter upgrade
命令即可更新到最新的稳定版,这相当于是自动执行git pull
命令,和通过 Git 命令进行操作的效果是相同的,只是这种封装好的命令对于不太懂 Git 的开发者更容易接受,其操作也更佳简便快捷。
使用镜像的坑
Flutter 的镜像中 SDK 的 Git 仓库和资源文件 (flutter infra
) 是分开的,这两个资源的更新频率可能不同。并且如果直接使用的是 GitHub 上官方提供的的 SDK 仓库 (大部分时候网速还是可以接受的),而资源文件则是通过镜像(源部分资源文件托管在谷歌服务器上访问受限),那么这两个资源的更新时间就更不同了。
如果 SDK 已经更新,但资源文件的镜像还没有更新,就会出现找不到资源的报错。这种情况通常等几天就会恢复正常。具体等待时间和所使用镜像的更新频率有关。