概要
どうも、@daiki1003です!さぁ、こちらも毎度お馴染みのアップデート記事となっております。
Flutter 3.35でアップデートされた内容に関しては後ほど記事を書きたいと思います。
執筆時アップデート前環境
名前 | バージョン |
macOS | Sequoia 15.6 |
Flutter | 3.32.8 |
⏱️ アップデートレベル
3
理由
Radio
は少しだけ作業が必要- 他は素直に従うだけ
Flutter
argument_type_not_assignable
この動きは最近良くあって、XxxThemeをXxxThemeDataに統一しようという流れですね。
// Before ThemeData( bottomAppBarTheme: BottomAppBarTheme( ..., ), ) // After ThemeData( bottomAppBarTheme: BottomAppBarThemeData( ..., ), )
deprecated_member_use
Radio.groupValue/onChanged
地味に使いづらかったのでこれは本当にナイスアプデですね!
// Before Column( children: [ Radio<int>( value: 1, groupValue: currentValue, onChanged: (newValue) { }, ), Radio<int>( value: 2, groupValue: currentValue, onChanged: (newValue) { }, ), ...ラジオ表示数分続く ], ) // After RadioGroup<int>( groupValue: currentValue, onChanged: (newValue) { }, child: Column( children: [ Radio<int>(value: 1), Radio<int>(value: 2), ], ), ),
RadioListTile.groupValue/onChanged
上とまとめてもよかったのですが、迷う人もいると思うので敢えてこちらも載せます。
// Before Column( children: [ RadioListTile<int>( value: 1, groupValue: currentValue, onChanged: (newValue) { }, ), RadioListTile<int>( value: 2, groupValue: currentValue, onChanged: (newValue) { }, ), ], ) // After RadioGroup( groupValue: currentValue, onChanged: (newValue) { }, child: Column( children: [ RadioListTile<int>(value: 1), RadioListTile<int>(value: 2), ], ), )
AppBarTheme.color
// Before ThemeData( appBarTheme: AppBarTheme( color: Colors.white, ), ) // After ThemeData( appBarTheme: AppBarTheme( backgroundColor: Colors.white, ), )
DropdownButtonFormField.value
// Before child: DropdownButtonFormField<SomeType>( value: SomeType.anything, ), // After child: DropdownButtonFormField<SomeType>( initialValue: SomeType.anything, )
Matrix4.translate
// Before Matrix4.identity() ..translate(0.1, 0.1) ..scale(maxScale); // After Matrix4.identity() ..translateByDouble(0.1, 0.1, 0, 0) ..scaleByDouble(maxScale, maxScale, maxScale, 1);
内部実装を見ると、元々指定していた第一引数をみて分岐をしているようです。
(Flutter
の実装より)
@pragma('wasm:prefer-inline') @pragma('vm:prefer-inline') @pragma('dart2js:prefer-inline') @Deprecated('Use translateByVector3, translateByVector4, ' 'or translateByDouble instead') void translate(dynamic x, [double y = 0.0, double z = 0.0]) { if (x is Vector3) { translateByVector3(x); } else if (x is Vector4) { translateByVector4(x); } else if (x is double) { translateByDouble(x, y, z, 1.0); } else { throw UnimplementedError(); } }
unnecessary_this
前から警告が出ていたように思いますが、このタイミングで検出されたものもありました。
class SomeWonderfulClass { const SomeWonderfulClass({ required this.value, }); final int value; int add(int otherValue) { // Before return this.value + otherValue; // After return value + otherValue; } }
avoid_types_as_parameter_names
そこまで多くの方に出る問題ではないかもしれませんが、既存のクラスと同名のクラス名をGenericsで利用した際に出ました。
// Before class Some<Error extends SomeError> { ... } // After class Some<TError extends SomeError> { ... } // または import 'dart:core' hide Error; class Some<Error extends SomeError> { ... }
Dart
特になし
最後に
もし、他に対応が必要だった内容があればメンションなどで教えていただけると嬉しいです!
誰かのお役に立てば。Twitterフォローお願いします
「次回以降も記事を読んでみたい!」「この辺分からなかったから質問したい!」
そんな時は、是非Twitter (@daiki1003)やInstagram (@ashdik_flutter)のフォローお願いします♪
Twitterコミュニティ参加お願いします
Twitterコミュニティ「Flutter lovers」を開設しました!参加お待ちしております😁
☕️ Buy me a coffee
また、記事がとても役に立ったと思う人はコーヒーを奢っていただけると非常に嬉しいです!
コメント