概要
どうも、@daiki1003です!前回Flutter 3.3.0が出てから約半年、ようやくマイナーバージョンアップデートとなるFlutter 3.7.0がリリースされました!
と同時にDart 2.19.0もリリースされましたね!


本記事では、上記記事をもとにFlutte 3.7.0の主なアップデートを解説しようと思います!
上から順番に、全体、デスクトップ、モバイルの変更にまとめているので気になるところだけ見るでもOKです!
それでは早速行ってみましょー!
【全体】Material 3対応を拡充
いくつかのウィジェットがMaterial 3に対応したようです。
使う際は、ThemeData.useMaterial3フラグをtrueにすること。
サンプルプロジェクト
【全体】カスケードメニュー
MenuItemButtonやSubmenuButtonが追加され、メニューアイテムとして
どんなウィジェットも渡せるようになり、すごく柔軟にメニューが作成できるようになっていそうです!
【全体】DevToolsのアップデート
型ごとに割り振られているメモリの現況などを把握できるProfile、
どんなコードパスでどんなメモリ割り当てされているのかを確認できるTrace、
ある時点とある時点におけるメモリスナップショットの比較ができるDiffなどのタブが新設されたようです。
【全体】コンテキストメニューのカスタマイズ
テキスト選択時だけではなく、画像のロングタップ時などの時に出すコンテキストメニューが柔軟になりました。CupertinoTextField.contextMenuBuilderやContextMenuControllerを使って実現できます。
【全体】toImageSync
Picture.toImageSync, Scene.toImageSyncメソッドが追加されるようです。
僕は正直この辺はあまり明るくないのですが、大きい画像を扱ったりするプロジェクトでは嬉しい感じでしょうか。
また、どうやらAnrdoidのページ遷移が早くなったみたいです。
【全体】カスタムシェーダの対応
フラグメントシェーダ周りでさまざまな改良がなされたようです。
また、カスタムシェーダでホットリロードが効くようになりました。
【全体】フォントのHotReload
新しいフォントを追加したときも含め、フォントの変更でホットリロードが効くようになりました!
すごいけど、一体どうやっているんだろう?
どっかにアップロードしてそれをダウンロードしてきてたりするのかな。
【全体】スクロールの改善
トラックパッドでの操作性や、テキスト選択の扱いがすごくやりやすくなったとのこと
特にmacOS上でのスクロールをより忠実に再現するためのphysicsも追加されました。
const BouncingScrollPhysics(decelerationRate: ScrollDecelerationRate.fast);
【全体】ListView.builderのNNBD対応
ListView.builderの型がIndexedWidgetBuilderからNullableIndexedWidgetBuilderに変更されました。
すなわち、nullを返却することができるようになりました。
【全体】翻訳ツール
gen-l10nがめっちゃ良くなったみたいです笑
【全体】バックグラウンドIsolate
Platform ChannelsがいかなるIsolateからでも実行可能になりました。
特にパッケージを作成している方々にとっては、パフォーマンス改善の腕の見せどころになりそうですね!
【全体】Swift化
iOSネイティブを触る際にSwiftで書きやすくなるよう、
リファレンスをこのタイミングで色々書いてくれたみたいです。
【全体】メモリ管理の改善
Flutterのバージョンアップを追っている人には、毎度お馴染みという感じですね笑
これだけでも毎回アップデートするモチベーションになります。
【macOS】メニューバー
PlatformMenuBarでmacネイティブなメニューバーが表示できるようになりました。
【macOS,Windows】SelectionAreaの改善
SelectionAreaの選択範囲がShift + rightで拡張できるようになったみたいです。
【macOS】10.13を最低バージョンに
macOS10.11, macOS 10.12が非推奨になりました。
これで、現在サポートしているすべてのバージョンでMetalがサポートされ、OpenGLのコードが削除できそうとのこと。
これにより、Flutterフレームワークのサイズが100KBほど削減できるみたいです。
【iOS】Impeller
stableチャンネルでImpellerがReady for Previewになったとのこと。
個人的にはこれがすごく楽しみです。
ほとんど出来ているそうですが、まだ少しだけSkiaとの差異があるみたいですね。
また、Androidに関しては鋭意開発中とのこと。
【iOS】リリース時のバリデーション
flutter build ipaコマンド実行時にイカリストにある項目をチェックしてくれるようになりました。
出典:https://medium.com/flutter/whats-new-in-flutter-3-7-38cbea71133c
【iOS】Cupertinoウィジェットの追加
iOSの設定画面のようにセクション分けされたListView用のウィジェットが追加されました!
今まではこの辺はパッケージを使ってやってたりしてたのでありがたいですね。
出典:https://medium.com/flutter/whats-new-in-flutter-3-7-38cbea71133c
【Android,iOS】テキスト拡大鏡
テキストカーソルを移動する際に、拡大鏡が表示されるようになりました!
どんどんネイティブに近づいてる感じありますね〜。
【iOS】Bitcodeのdeprecated
BitcodeはXcode 14から意味なくなったので
以前、YESに設定した人はNOにしておいてね、とのことです。
【iOS】BackdropFilter
iOSにおいて、Blurの表現できる幅が広がったみたいです。
【iOS】アニメーションジャンクの削減
ダミーのCADisplayLinkを使うことでアニメーションジャンクの削減がなされ、
よりスムースなアニメーションを実現することができるようになったそうです。
最後に
いかがでしたでしょうか?
それぞれの項目を割とかいつまんで紹介しているので詳細が気になった方は下記記事を参考に深ぼって見てくださいね!




Twitterフォローお願いします
「次回以降も記事を読んでみたい!」「この辺分からなかったから質問したい!」
そんな時は、是非Twitter (@daiki1003)やInstagram (@ashdik_flutter)のフォローお願いします♪
Twitterコミュニティ参加お願いします
Twitterコミュニティ「Flutter lovers」を開設しました!参加お待ちしております😁
☕️ Buy me a coffee
また、記事がとても役に立ったと思う人はコーヒーを奢っていただけると非常に嬉しいです!



コメント
大変助かります!!!!ありがとうございます!