Closed5
Flutter Desktop簡易アノテーションツールのnull safety対応
Flutter SDKのdartのバージョンを確認
dart --version
Dart SDK version: 2.12.1 (stable) (Wed Mar 10 10:18:47 2021 +0100) on "macos_x64"
使用ライブラリがすべてnull safetyか確認する
dart pub outdated --mode=null-safety
[✗] indicates versions without null safety support.
[✓] indicates versions opting in to null safety.
Package Name Current Upgradable Resolvable Latest
direct dependencies:
csv ✗4.1.0 ✗4.1.0 ✓5.0.0 ✓5.0.0
flutter_hooks ✗0.15.0 ✗0.15.0 ✓0.16.0 ✓0.16.0
freezed_annotation ✗0.12.0 ✗0.12.0 ✓0.14.1 ✓0.14.1
hooks_riverpod ✗0.12.2 ✗0.12.4 ✓0.13.1 ✓0.13.1
path_provider ✗1.6.27 ✗1.6.28 ✓2.0.1 ✓2.0.1
dev_dependencies:
build_runner ✗1.10.13 ✗1.11.5 ✗1.11.5 ✗1.12.2
freezed ✗0.12.7 ✗0.12.7 ✓0.14.1 ✓0.14.1
integration_test ✗(sdk) ✗(sdk) ✗(sdk) ✗(sdk)
アプリ本体は大丈夫
パッケージをアップグレードする
dart pub upgrade --null-safety
null-safety compatible versions do not exist for:
- build_runner
You can choose to upgrade only some dependencies to null-safety using:
dart pub upgrade --nullsafety freezed_annotation cupertino_icons flutter_hooks csv path_provider freezed hooks_riverpod
build_runnerはまだnull-safetyバージョンがないが、それ以外のパッケージを指定することでアップグレードできる。
dart pub upgrade --nullsafety freezed_annotation cupertino_icons flutter_hooks csv path_provider freezed hooks_riverpod
dart pub get
pubspec.yaml が更新される。
dart migrateの実行
dart migrate
エラーになった
1 analysis issue found:
error • The function 'run' isn't defined at integration_test/app_test.dart:14:16 • (undefined_function)
integration_testは行っていないので、フォルダごと削除。
もう一回。
dart migrate
View the migration suggestions by visiting:
http://127.0.0.1:52076/xxx/ikut_annotation?authToken=xxxx
ここにアクセスするように案内される。
Null Safety Previewの表示
?を付けたくないところに?が付くので、とりあえず APPLY MIGRATION
を押して、git diff
で変更部分をAndroid Studioで修正する方向性にする。
late
はKotlinでいう lateinit
。代入後はnon null扱い。
Android Studioでソースコードを修正
まずは.freezed.dartを再生成
flutter pub run build_runner build --delete-conflicting-outputs
?
や !!
はいらないので取り除いた。
できあがり
このスクラップは2021/03/18にクローズされました