我將專案升級到 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.
這會造成什麼問題嗎? 答案是不會的,你以前怎麼寫程式碼就怎麼寫,怎麼除錯就怎麼除錯,不會有影響。