概要
どうも、@daiki1003です!Flutter 3.10.0とうとうリリースされましたねー!iOSでImpellerがstableになったと言うことでいち早く入れたい人も多いのではないかなと思います。
そこで弊ブログでは毎度お馴染みのアップデート時対応シリーズを
書いてみました!
アップデート時に何を変更しなくてはいけなくなるのか、皆様の参考になると幸いです。
執筆時アップデート前環境
| 名前 | バージョン |
| macOS Ventura | 13.1 |
| Flutter | 3.7.12 |
アップデート内容の紹介
use_build_context_synchronously
Page not found · GitHub Pages
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
Page not found · GitHub Pages
const付けられるウィジェットは付けろよ、と言う警告です。
Stack, Row/Column, Paddingなどが新たにconstに対応しました!
これは地味に嬉しいですね!!!
// BEFORE
Column(
children: const [
...,
],
)
// AFTER
const Column(
children: [
...,
],
)
deprecated_member_use
Diagnostic messages
An index of the diagnostics produced by the Dart analyzer.
// BEFORE MediaQueryData.fromWindow( WidgetsBinding.instance.window, ) // AFTER MediaQueryData.fromView( View.of(context), )
などなど。
MaterialApp.useInheritedMediaQueryなんかも対象になったのは地味に大きいかもしれません。
avoid_redundant_argument_values
Page not found · GitHub Pages
初期値として与えられている値を、インスタンス化時に引数に渡そうとすると怒られます。
この警告自体は前からあるものですが、どうやらfreezedパッケージの@Defaultが
対象になったようです。
@freezed
class Some extends _$Some {
const factory Some({
@Default(0) int hoge,
});
}
// BEFORE
Some(hoge: 0)
// AFTER
Some()
avoid_positional_boolean_parameters
Page not found · GitHub Pages
// 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
Page not found · GitHub Pages
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
また、記事がとても役に立ったと思う人はコーヒーを奢っていただけると非常に嬉しいです!



コメント