日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

flutter项目迁移空安全

發布時間:2025/3/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 flutter项目迁移空安全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

遷移

你的代碼里大部分需要更改的代碼,都是可以輕易推導的。例如,如果一個變量可以為空,它的類型需要 ? 后綴。一個不可以為空的命名參數,需要使用 required 標記。

針對遷移,你有兩個選項可以選擇:

  • 使用遷移工具,它可以幫你處理大多數可推導的變更。
  • 自己動手,豐衣足食。

使用遷移工具

遷移工具會帶上一個非空安全的 package ,將它轉換至空安全。你可以先在代碼中添加 提示標記

開始轉換前,請做好如下的準備:

  • 使用最新的 Dart SDK 穩定版本。
  • 運行 dart pub outdated --mode=null-safety 以確保所有依賴為最新且空安全。

在包含 pubspec.yaml 的目錄下,執行 dart migrate 命令,啟動遷移工具。

dart migrate

如果你的 package 可以進行遷移,工具會輸出類似以下的內容:

使用 Chrome 瀏覽器訪問 URL,你可以看到一個交互式的界面,引導你進行遷移:

理解遷移的結果

若要了解每個變化(或者未變化)的原因,點擊 Proposed Edits 窗口中的行數,原因會出現在 Edit Details 窗口中。

點擊 line 3 鏈接,你可以看到遷移工具添加 ! 的原因。而因為你知道 zero 不會為空,所以你可以改進遷移結果。

改進遷移的結果

當分析結果推導了錯誤的可空性時,你可以添加臨時的提示標記來改變建議的編輯:

  • 在遷移工具的 Edit Details 窗格中,你可以通過 Add /\*?\*/ hintAdd /\*!\*/ hint 按鈕來添加提示標記。

    按下這些按鈕,相應的標記會立刻添加到代碼中,并且 無法撤銷。如果你想刪除標記,可以和平常一樣使用代碼編輯器刪除它。

  • 就算遷移工具正在運行,你也可以使用編輯器添加提示標記。由于你的代碼還未遷移到空安全,所以無法使用空安全的新特性。但是你可以進行與空安全無關的改動,例如重構。

    當你完成編輯后,點擊 Rerun from sources 進行更改。

只遷移部分文件

盡管我們希望你能一次性完成遷移工作,但對于大體量的應用或 package 而言并不是簡單的事。如果你想只遷移部分文件,請將暫時不遷移的文件前方的綠色勾選框取消勾選。

手動遷移

如果你不想使用遷移工具,你也可以手動進行遷移。

我們推薦你 優先遷移最下層的庫 —— 指的是沒有導入其他 package 的庫。接著遷移直接依賴了下層庫的依賴庫。最后再遷移依賴項最多的庫。

舉個例子,假設你的 lib/src/util.dart 導入了其他(空安全)的 package 和核心庫,但它沒有包含任何 import '<本地路徑>' 的引用。那么你應當優先考慮遷移 util.dart,然后遷移依賴了 util.dart 的文件。如果有一些循環引用的庫(例如 A 引用了 B,B 引用了 C,C 引用了 A),建議同時對它們進行遷移。

手動對 package 進行遷移時,請參考以下步驟:

  • 編輯 package 的 pubspec.yaml 文件,將最低 SDK 版本設置到至少為 2.12.0:

    environment:sdk: '>=2.12.0 <3.0.0'
  • 重新生成 package 的配置文件:

    $ dart pub get

    在版本最低是 2.12.0 的 SDK 上運行 dart pub get 時,會將每個 package 的默認 SDK 最低版本設定為 2.12,并且默認它們已經遷移至空安全。

  • 在你的 IDE 上打開package 。
    你也許會看到很多錯誤,沒關系,讓我們繼續。

  • 利用分析器來辨析靜態錯誤,逐個遷移 Dart 文件。
    按需添加 ?、!、required 以及 late 來消除靜態錯誤。

  • 分析

    更新你的 package(在 IDE 或命令行工具中使用 dart pub get)后在 IDE 或命令行工具中對你的代碼進行 靜態分析:

    $ dart pub get $ dart analyze # or `flutter analyze`

    測試

    如果你的代碼通過了分析,接下來可以開始測試:

    $ dart test # or `flutter test`

    你可能需要更新使用了空值作為預期用例的測試代碼。

    如果你需要對代碼作出大量的更改,那么你可能需要重新對代碼進行遷移。這時請先回滾代碼更改,再運行遷移工具進行遷移。

    總結

    以上是生活随笔為你收集整理的flutter项目迁移空安全的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。