Open15

Flutter v1.22.6 -> v2.1.2にバージョンアップ

kudokudo
fvm flutter pub outdated --mode=null-safety
fvm flutter pub upgrade --null-safety --dry-run
kudokudo

pubspec.yamlのsdkとflutterバージョンを変更

-  sdk: ">=2.9.0 <3.0.0"
-  flutter: ">=1.7.8 <2.0.0"
+  sdk: ">2.12.0 <3.0.0"
+  flutter: ">=1.7.8 <2.9.0"
kudokudo

migrateしてみると大量にエラー出力

dart migrate

error • The argument type 'Null' can't be assigned to the parameter type 'int' at hogehoge.dart:9999:99 • (argument_type_not_assignable)
kudokudo

新しいmigrateツールのほうが色々改善されているからstableじゃないバージョンを使うほうが良さそう、と理解した
devチャンネルの最新版を利用してみる

fvm install 2.3.0-16.0.pre
fvm use 2.3.0-16.0.pre
kudokudo

migrateを実行してみる。エラーのコメントに従い2つオプションを設定して、最終的に以下のように実行。

fvm dart migrate --skip-import-check  --ignore-errors

ライブラリのIF変更周りでExceptionが発生しているのでTODOコメント残して雑に修正し、上記コマンドを再実行

kudokudo

出力されたURLをブラウザで開くと、公式ガイド通りの移行用UIが表示された
ざっと変更点を確認して、applyする

kudokudo

基本はどの型もoptionalにして、徐々に非optional型に移行していければいいと思っていたが、考えを改めた
swiftでいう if let だったりkotlinでいう .toIntOrNull() のような便利関数が提供されていないので、optionalの考慮でコードが汚くなっていく
元々nullチェックしていない箇所は実質強制アンラップしているのと同じなので、強制アンラップを基本として移行する