【Flutter】3.7.0がリリースされたので解説してみたよ

Dart

概要

どうも、@daiki1003です!

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

What’s new in Flutter 3.7
Material 3 updates, iOS improvements, and much more!

本記事では、上記記事をもとにFlutte 3.7.0の主なアップデートを解説しようと思います!
上から順番に、全体、デスクトップ、モバイルの変更にまとめているので気になるところだけ見るでもOKです!
それでは早速行ってみましょー!

【全体】Material 3対応を拡充

いくつかのウィジェットがMaterial 3に対応したようです。
使う際は、ThemeData.useMaterial3フラグをtrueにすること。

サンプルプロジェクト

material_3_demo
A new Flutter project.

【全体】カスケードメニュー

MenuItemButtonSubmenuButtonが追加され、メニューアイテムとして
どんなウィジェットも渡せるようになり、すごく柔軟にメニューが作成できるようになっていそうです!

【全体】DevToolsのアップデート

型ごとに割り振られているメモリの現況などを把握できるProfile
どんなコードパスでどんなメモリ割り当てされているのかを確認できるTrace
ある時点とある時点におけるメモリスナップショットの比較ができるDiffなどのタブが新設されたようです。

【全体】コンテキストメニューのカスタマイズ

テキスト選択時だけではなく、画像のロングタップ時などの時に出すコンテキストメニューが柔軟になりました。
CupertinoTextField.contextMenuBuilderContextMenuControllerを使って実現できます。

【全体】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チャンネルでImpellerReady for Previewになったとのこと。

https://github.com/flutter/engine/tree/main/impeller#try-impeller-in-flutter

個人的にはこれがすごく楽しみです。
ほとんど出来ているそうですが、まだ少しだけSkiaとの差異があるみたいですね。

また、Androidに関しては鋭意開発中とのこと。

【iOS】リリース時のバリデーション

flutter build ipaコマンド実行時にイカリストにある項目をチェックしてくれるようになりました。

https://github.com/flutter/engine/tree/main/impeller#try-impeller-in-flutter


出典: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

BitcodeXcode 14から意味なくなったので
以前、YESに設定した人はNOにしておいてね、とのことです。

【iOS】BackdropFilter

iOSにおいて、Blurの表現できる幅が広がったみたいです。

【iOS】アニメーションジャンクの削減

ダミーのCADisplayLinkを使うことでアニメーションジャンクの削減がなされ、
よりスムースなアニメーションを実現することができるようになったそうです。

最後に

いかがでしたでしょうか?
それぞれの項目を割とかいつまんで紹介しているので詳細が気になった方は下記記事を参考に深ぼって見てくださいね!

Flutter 3.7.0 release notes
Release notes for Flutter 3.7.0.
What’s new in Flutter 3.7
Material 3 updates, iOS improvements, and much more!
誰かのお役に立てば。

Twitterフォローお願いします

「次回以降も記事を読んでみたい!」
「この辺分からなかったから質問したい!」

そんな時は、是非Twitter (@daiki1003)Instagram (@ashdik_flutter)のフォローお願いします♪

Twitterコミュニティ参加お願いします

Twitterコミュニティ「Flutter lovers」を開設しました!
参加お待ちしております😁

☕️ Buy me a coffee

また、記事がとても役に立ったと思う人は
コーヒーを奢っていただけると非常に嬉しいです!
@daiki1003

コメント

  1. まこと より:

    大変助かります!!!!ありがとうございます!

タイトルとURLをコピーしました