Flutter #03 将原有的 Flutter app 迁移到 Flutter 2.0

3,274 阅读2分钟

image

我将项目升级到 Flutter 2.0 的时候遇到很多问题,在我解决完问题之后,我决定写一篇快速升级指南。如果你对 Flutter 2.0 感兴趣的话,那就往下看吧~

image.png

  1. 首先,为了升级你的 Flutter SDK ,你需要打开你的 terminal 并运行下面这条命令。
flutter upgrade
  1. 上面这条命令将会在默认使用的通道升级你的 SDK , 如果你想要改变你的通道,那么可以使用下面这条命令。
flutter channel <channel>

3.升级完成后,你将看到如下图: Yes, it is as easy as this! image.png

  1. 从上图我们可以看到倒数第二行:Running with unsound null safety . 什么是 null safety ? unsoud 是什么意思?

首先,我们看下 null safety 的定义,首先它是一种技术,这种技术声明了变量不能为空,除非人为去定义它允许为空。看定义似乎不能直观的看出它究竟是个什么东东,我们来看个示例:

使用 null safety , 代码中的所有变量都是不允许为空的,如下:

// In null-safe Dart, none of these can ever be null.
var i = 42; // Inferred to be an int.
String name = getFileName();
final b = Foo();

如果要人为去定义它允许为空呢,需要添加 到它的变量声明,如下:

int? aNullableInt = null;

在 Dart 中 null safety 遵循以下三个原则: [1] Non-nullable by default. - 即默认非空。除非开发人员定义了它允许为空,否则它就是非空的。 [2] Incrementally adoptable. - 逐步适配。即你可以选择哪个项目什么时候运用 null safety , 你也可以项目中一部分使用 null safety,一部分不使用。 [3] Fully sound. - 完全可靠的。Dart 中使用 null safety 是可靠的,它支持编译器优化。如果类型系统确定某个变量不为空,那么它将在编译过程中一直不会为空。如果你将整个项目运用 null safety , 那么项目将会更少 bug 、二进制文件更小、执行速度更快。

因此,Running with unsound null safety . 是什么意思呢?

它是指 我们项目中使用到的 Flutter 框架已经支持 null safety 了,但是我们的项目没有使用 null safety.

这会造成什么问题吗? 答案是不会的,你以前怎么写代码就怎么写,怎么调试就怎么调试,不会有影响。