概要
どうも、@daiki1003です!Flutter 3
がリリースされましたね!
変更内容は後ほどまとめるとして。
今回は手元のプロジェクトでアップデートした際にどこを変更したのか
まとめてみようと思います。
これからあげようと思ってるけど大変なのかな?
何を変えるんだろう?
と思っている方の参考になれば幸いです!
筆者環境
OS: macOS Monterey 12.3.1
アップデート前バージョン: Flutter 2.10.5
アップデート内容の紹介
unnecessary_non_null_assertion
BeforeWidgetsBinding.instance!.addPostFrameCallback
AfterWidgetsBinding.instance.addPostFrameCallback
Binding系のinstanceがnon-nullableになりました。
invalid_null_aware_operator
BeforeWidgetsBinding.instance?.addPostFrameCallback
AfterWidgetsBinding.instance.addPostFrameCallback
unnecessary_non_null_assertion
とほぼ同じです。
nullableな値に対して?
で受けていた場合、こちらの警告になりますので?
を消しましょう。
unused_element
Before
void someMethod({String optionalText = 'optional'}) { print(optionalText); }
After
void someMethod() { print('optional'); }
optional
な値を引数に取るにも関わらず、どこからも指定されていない場合に怒られます。
引数から削除し、変数でoptionalText
としていた箇所に'optional'
を
指定します。
もしくは、内部で変数にしてしまうのもありでしょう。
Dart 2.17
ここからはDartを2.17に上げると起こる警告です。
avoid_redundant_argument_values
Before
Column( mainAxisAlignment: MainAxisAlignment.start, ... )
After
Column( ... )
各クラスやメソッドの引数にデフォルト値を指定してしまっている場合に出る警告です。
基本的にはクラス内部で定義されているデフォルト値を使用しようね、という意味合いの警告だと思います。
use_colored_box
Before
Container(color: Colors.blue)
After
ColoredBox(color: Colors.blue)
color
プロパティしか使っていない場合は、Container
ではなくColoredBox
使おうな、と言うだけです。
これ系は、SizedBox
でも同じことで怒られますね!
use_super_parameters
基本的にdart fix --apply
を叩くことで自動で解決してくれますが。
Before
const MyApp({ Key? key, }) : super(key: key);
After
const MyApp({super.key});
super.で良くなったのは本当に最高のアプデやな。
一つのクラスに対して複数のサブクラスが存在するとき。
今までならサブクラスは毎度クラス名も明記しなければいけなかった。
が、それが全てsuper.で良くなった。#Flutter— ashdik(朝日)@Flutter(Kaigi) (@daiki1003) May 12, 2022
地味にクラスを書かなくて良くなったのは最高のアプデだと思っています。
しかし、ここで注意が必要です。
僕らは、新しくクラスを作る時は上記MyApp
の様にKey?
をnamed parameters
に追加しろと
言われて今まで育ってきました。(よね?)
ですが、本対応を行った後にprivate class
やprivate constructor
に対しては
「使ってないからsuper.key
の指定を削除しなさい」と怒られます。
build_runnerのエラー
ここまでで、普通にアプリは実行できるようになっています。
が、多くのプロジェクトに入っているであろうbuild_runner
、動かしてみると下記のエラーが出ました。
(freezed
の生成に使っています。)
This builder requires Dart inputs without syntax errors.
However, ‘xxx' (or an existing part) contains the following errors.
‘xxx' This requires the 'super-parameters' language feature to be enabled.Try fixing the errors and re-running the build.
にはまっている
— ashdik(朝日)@Flutter(Kaigi) (@daiki1003) May 15, 2022
これも地味に時間を使ってしまったのですが、下記をpubspec.yaml
に追加することで解決しました。
analyzer: ^3.4.1
手元のプロジェクトでは、そもそもanalyzer
がなかったので純粋に追加しました。
最後に
とりあえず、ここまでの対応で全ての警告は消えてくれ、無事にCIも通りました。
まだ、何かありましたら追加したいと思います。
また、自分のプロジェクトではこんな対応もしたよーなどありましたら
教えていただけると嬉しいです!
Twitterフォローお願いします
「次回以降も記事を読んでみたい!」「この辺分からなかったから質問したい!」
そんな時は、是非Twitter (@daiki1003)やInstagram (@ashdik_flutter)のフォローお願いします♪
Twitterコミュニティ参加お願いします
Twitterコミュニティ「Flutter lovers」を開設しました!参加お待ちしております😁
☕️ Buy me a coffee
また、記事がとても役に立ったと思う人はコーヒーを奢っていただけると非常に嬉しいです!
コメント