flutter

升级 Flutter 2

2021-04-15  本文已影响0人  DoctorCat2020
image.png
Flutter 2 发布至今已经1个多月了,不知道小伙伴们都升级体验了没有。官方发布的Flutter 2 技术博文中详细介绍了Flutter 2 带来的更新,大体包括:

很多三方库已经做了适配升级,后续的bug修复都会在新版本中升级,旧版本的 Flutter 无法使用。如果你的项目中的没有遇到三方库的bug,那么可以暂时保持观望,但还是应该尽快升级,后续的 Android、iOS 甚至是 Xcode 更新都有可能导致你的 App 不可用。

升级步骤

第一步当然是

$ flutter upgrade

但是别急,Flutter 2 要求项目中三方库适配 Null Safety,否则无法编译通过,所以首先使用如下命令

$ dart pub outdated --mode=null-safety

检查你的三方库是否支持 Null Safety,如下图所示

image.png

如果所有三方库的新版本都支持了 Null Safety,那么就可以放心升级 Flutter 版本了。剩下的步骤都在 Migrating to null safety 这篇文章中,大家可以自己去看。

以上是理想情况下的升级方法,现实是一些三方库维护速度很慢或者作者干脆弃坑了,而项目又不得不用,另外又有些库的 bug 困扰了我们很久,然后我们发现它在 Null Safety 的版本上修复了,这时我们只有硬着头皮上了。下面我们重点讨论这种情况。

第一步还是要升级 Flutter,然后把能升级的 package 全部升级了。

第二步把无法升级的 package 源码 clone 到项目中,记得删除 .git 目录。把引用方式改成源码引用,比如

# azlistview: ^1.1.1
azlistview:
  path: ./azlistview

然后将终端命令位置移动到 package 目录中,运行

$ dart pub outdated --mode=null-safety

检查 package 项目的所有依赖都有对应的 Null Safety 版本,如果没有请重复第二步。升级完后运行

$ dart migrate

提示

View the migration suggestions by visiting:

  http://127.0.0.1:60278/Users/you/project/mypkg.console-simple?authToken=Xfz0jvpyeMI%3D

浏览器打开链接,点击 APPLY MIGRATION。

image.png

对于自己创建的 package 或者 plugin,操作相同。

最后,将终端命令移到主项目根路径,运行

$ dart migrate

操作同上一步。

迁移命令执行完之后,并不代表完全 OK 了,我们还要把 Dart Analysis 提示的所有 error 全部解决

image.png

可以尝试使用

$ dart fix --apply

修复所有 Api 改动引起的错误,也可以用 IDE来修改。

image.png

整个过程可能要花很长时间,过于细小的修改就不赘述了,祝大家都升级成功!

参考文章

1. Announcing Flutter 2
2. What’s New in Flutter 2
3. Migrating to null safety

上一篇下一篇

猜你喜欢

热点阅读