Flutter null safety 対応

こんにちは、株式会社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

colorshapeといった属性が style属性に統一され、ButtonStyleクラスを使って設定するやり方に変更

などなど。既存のプロジェクトで対応すると修正箇所がかなり多くなりそうでした。


個人的には

flutter_gen:
  integrations:
    flutter_svg: true

これが使えるようになったのが嬉しい

【旧】

 SvgPicture.asset('assets/images/main.svg');

【新】

Assets.images.main.svg()

とタイプセーフになりました。

採用情報はこちら
目次