概要
どうも、@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
また、記事がとても役に立ったと思う人はコーヒーを奢っていただけると非常に嬉しいです!
コメント
大変助かります!!!!ありがとうございます!