我將項(xiàng)目升級(jí)到 Flutter 2.0 的時(shí)候遇到很多問(wèn)題撬腾,在我解決完問(wèn)題之后,我決定寫(xiě)一篇快速升級(jí)指南胰默。如果你對(duì) Flutter 2.0 感興趣的話饰潜,那就往下看吧~
- 首先,為了升級(jí)你的 Flutter SDK 碟刺,你需要打開(kāi)你的 terminal 并運(yùn)行下面這條命令薯酝。
flutter upgrade
- 上面這條命令將會(huì)在默認(rèn)使用的通道升級(jí)你的 SDK , 如果你想要改變你的通道吴菠,那么可以使用下面這條命令。
flutter channel <channel>
3.升級(jí)完成后占哟,你將看到如下圖:
Yes, it is as easy as this!
- 從上圖我們可以看到倒數(shù)第二行:Running with unsound null safety .
什么是null safety
?unsoud
是什么意思榨乎?
首先,我們看下 null safety 的定義蜜暑,首先它是一種技術(shù),這種技術(shù)聲明了變量不能為空隐绵,除非人為去定義它允許為空拙毫。看定義似乎不能直觀的看出它究竟是個(gè)什么東東恬偷,我們來(lái)看個(gè)示例:
使用 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 遵循以下三個(gè)原則:
[1] Non-nullable by default. - 即默認(rèn)非空。除非開(kāi)發(fā)人員定義了它允許為空夭谤,否則它就是非空的巫糙。
[2] Incrementally adoptable. - 逐步適配。即你可以選擇哪個(gè)項(xiàng)目什么時(shí)候運(yùn)用 null safety , 你也可以項(xiàng)目中一部分使用 null safety,一部分不使用醉锄。
[3] Fully sound. - 完全可靠的。Dart 中使用 null safety 是可靠的恳不,它支持編譯器優(yōu)化开呐。如果類型系統(tǒng)確定某個(gè)變量不為空规求,那么它將在編譯過(guò)程中一直不會(huì)為空神妹。如果你將整個(gè)項(xiàng)目運(yùn)用 null safety , 那么項(xiàng)目將會(huì)更少 bug 家妆、二進(jìn)制文件更小、執(zhí)行速度更快蛹找。
因此,Running with unsound null safety .
是什么意思呢庸疾?
它是指 我們項(xiàng)目中使用到的 Flutter 框架已經(jīng)支持 null safety 了当编,但是我們的項(xiàng)目沒(méi)有使用 null safety.
這會(huì)造成什么問(wèn)題嗎?
答案是不會(huì)的金顿,你以前怎么寫(xiě)代碼就怎么寫(xiě),怎么調(diào)試就怎么調(diào)試揍拆,不會(huì)有影響茶凳。