概要
どうも、@daiki1003です!Flutter 3.10.0
とうとうリリースされましたねー!iOS
でImpeller
がstableになったと言うことでいち早く入れたい人も多いのではないかなと思います。
そこで弊ブログでは毎度お馴染みのアップデート時対応シリーズを
書いてみました!
アップデート時に何を変更しなくてはいけなくなるのか、皆様の参考になると幸いです。
執筆時アップデート前環境
名前 | バージョン |
macOS Ventura | 13.1 |
Flutter | 3.7.12 |
アップデート内容の紹介
use_build_context_synchronously
use_build_context_synchronously
context
をawait
を跨いで使うなという警告です。
// BEFORE FuturesomeMethod({ required BuildContext context, }) async { final result = await _someFuture(); Navigator.of(context).push (...); } // AFTER Future someMethod({ required BuildContext context, }) async { final result = await _someFuture(); if (context.mounted) { Navigator.of(context).push (...); } }
prefer_const_constructors
prefer_const_constructors
const
付けられるウィジェットは付けろよ、と言う警告です。
Stack
, Row/Column
, Padding
などが新たにconst
に対応しました!
これは地味に嬉しいですね!!!
// BEFORE Column( children: const [ ..., ], ) // AFTER const Column( children: [ ..., ], )
deprecated_member_use
Diagnostic messages
Details for diagnostics produced by the Dart analyzer.
// BEFORE MediaQueryData.fromWindow( WidgetsBinding.instance.window, ) // AFTER MediaQueryData.fromView( View.of(context), )
などなど。
MaterialApp.useInheritedMediaQuery
なんかも対象になったのは地味に大きいかもしれません。
avoid_redundant_argument_values
avoid_redundant_argument_values
初期値として与えられている値を、インスタンス化時に引数に渡そうとすると怒られます。
この警告自体は前からあるものですが、どうやらfreezed
パッケージの@Default
が
対象になったようです。
@freezed class Some extends _$Some { const factory Some({ @Default(0) int hoge, }); } // BEFORE Some(hoge: 0) // AFTER Some()
avoid_positional_boolean_parameters
avoid_positional_boolean_parameters
// BEFORE Task(true); Task(false); ListBox(false, true, true); Button(false); // AFTER Task.oneShot(); Task.repeating(); ListBox(scroll: true, showScrollbars: true); Button(ButtonState.enabled);
CI/CD
flutter pub run
flutter pub run
はdeprecated
になり、dart run
に変更する必要があります。VSCode
の方は、.vsCode/tasks.json
も確認しておくと良さそうですね。
dart formatの実行
lint
のルールが変わっているのか、変更される場合が多くCI
でフォーマットをチェックしている場合は
コケる可能性があるので実行しておきましょう。
Dart 3
unnecessary_breaks
unnecessary_breaks
switch
のcase
文で、ほとんどの場合、break
が必要なくなります。
例外として、処理を行いたくない場合fallthrough
されてしまうのでbreak
を書く必要があります。
enum Hoge { foo, bar, baz, qux ; } // BEFORE switch (hoge) { case Hoge.foo: print('This is foo'); break; case Hoge.bar: break; case Hoge.baz: case Hoge.qux: print('These are baz or qux'); break; } // AFTER switch (hoge) { case Hoge.foo: print('This is foo'); case Hoge.bar: break; case Hoge.baz: case Hoge.qux: print('These are baz or qux'); }誰かのお役に立てば。
Twitterフォローお願いします
「次回以降も記事を読んでみたい!」「この辺分からなかったから質問したい!」
そんな時は、是非Twitter (@daiki1003)やInstagram (@ashdik_flutter)のフォローお願いします♪
Twitterコミュニティ参加お願いします
Twitterコミュニティ「Flutter lovers」を開設しました!参加お待ちしております😁
☕️ Buy me a coffee
また、記事がとても役に立ったと思う人はコーヒーを奢っていただけると非常に嬉しいです!
コメント