我将项目升级到 Flutter 2.0 的时候遇到很多问题,在我解决完问题之后,我决定写一篇快速升级指南。如果你对 Flutter 2.0 感兴趣的话,那就往下看吧~
- 首先,为了升级你的 Flutter SDK ,你需要打开你的 terminal 并运行下面这条命令。
flutter upgrade
- 上面这条命令将会在默认使用的通道升级你的 SDK , 如果你想要改变你的通道,那么可以使用下面这条命令。
flutter channel <channel>
3.升级完成后,你将看到如下图:
Yes, it is as easy as this!
- 从上图我们可以看到倒数第二行: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.
这会造成什么问题吗?
答案是不会的,你以前怎么写代码就怎么写,怎么调试就怎么调试,不会有影响。