こんにちは、株式会社Pentagonでエンジニアをしている日浦です。
null safery対応について
バージョン
- Flutter 2.0 以上
- Dart 2.12 以上
■ 依存パッケージを Null Safety に対応
全ての依存パッケージが Null Safety に対応しているか確認
flutter pub outdated --mode=null-safety
問題なければパッケージを Null Safety 対応済みのバージョンに更新
flutter pub upgrade --null-safety
■ バージョンをあげると、コンストラクタでエラーが出るので修正
class MyPage extends StatelessWidget {
MyPage({this.title});
final String title;
たとえばこういうコンストラクタでのエラーが多発
(null が入る可能性があるコードがエラーとなる)
対処法
① requiredをキーワードをつけて必須にする
MyPage({required this.title});
② デフォルト値を設定する
MyPage({this.title = 'title'});
③ Optional型にする
final String? title;
optionalにする場合、使う時はOptional Chaining、Null Coalescing operatorなどnull チェックをする。
■ バージョンあげたことによって非推奨になったWidgetなどを修正
Button系
- RaisedButton → ElevatedButton
- FlatButton → TextButton
color
や shape
といった属性が style
属性に統一され、ButtonStyle
クラスを使って設定するやり方に変更
などなど。既存のプロジェクトで対応すると修正箇所がかなり多くなりそうでした。
個人的には
flutter_gen:
integrations:
flutter_svg: true
これが使えるようになったのが嬉しい
【旧】
SvgPicture.asset('assets/images/main.svg');
【新】
Assets.images.main.svg()
とタイプセーフになりました。