【Flutter】3.29がリリースされたので内容について解説してみたよ

Dart

概要

どうも、@daiki1003です!

とうとうやって来ましたね!

毎度お馴染みの新しいアップデートの解説記事になります。

それでは行ってみましょー!

🍁 所感

個人的に嬉しいアップデート3つ

  • TextFieldの範囲選択のUX向上
  • Skia の削除によるバンドルサイズ低下
  • 実機ビルドでウィジェット選択モードを解除出来る

今回のアップデートが大事な人

  •  Cupertino 系ウィジェットを多用している方
  • webでの利用者

Flutter

TextField

範囲選択時、カーソルを自由自在に動かせる様になりました!

出典: https://medium.com/flutter/whats-new-in-flutter-3-29-f90c380c2317

SelectionListener

SelectionListenerSelectionListenerNotifier を利用することで、SelectionAreaSelectableRegion の選択中の情報が SelectionDetails クラスより取得できる様になりました。

利用方法も SelectionListener でラップするだけ。

同様に、 InheritedWidget による SelectableRegionSelectionStatusScope クラスも追加されました。

Accessibility

FormDropDownMenu辺りの読み上げの精度が向上しました。

Threading

AndroidiOSDart コードがメインスレッドで実行される様になりました。

この影響で複数スレッドでやり取りする際のオーバーヘッドがなくなりました。

逆に、実行時間に関しては今までよりシビアになる必要がありそうですね。

Material

ThemeData.dialogBackgroundColorの非推奨

代わりに、 DialogThemeData.backgroundColor を利用しましょう。

基本的に、 ThemeData.xxxColor はあまり使わない方が良い認識です 👍

Circular(Linear)ProgressIndicator

year2023フラグに false を設定することで、最新の Material 3 に準拠出来る様になりました。

出典: https://medium.com/flutter/whats-new-in-flutter-3-29-f90c380c2317

Slider

こちらも同様に year2023 フラグを false にすることで最新の Material 3 準拠のデザインになります。

出典: https://medium.com/flutter/whats-new-in-flutter-3-29-f90c380c2317

FadeForwardsPageTransitionsBuilder

遷移時に、Android と同様のアニメーションが行われる様になり、 ZoomPageTransitionsBuilder でのパフォーマンス問題も解決しています。

BackdropGroup/ BackDropFilter.grouped

複数のバックドロップフィルターを表示するアプリケーションは上記ウィジェットやコンストラクタを使うことでパフォーマンスが向上しました!

iOS

Cupertino(Sliver)NavigationBar

bottom プロパティが追加され、開閉途中のスクロール時の挙動が改善され、大きい文字のタイトルを表示する .largeコンストラクタが追加されました。

出典: https://medium.com/flutter/whats-new-in-flutter-3-29-f90c380c2317

CupertinoSheetRoute

ドラッグして消せる CupertinoSheetRoute が追加されました。

出典: https://medium.com/flutter/whats-new-in-flutter-3-29-f90c380c2317

showCupertinoSheet

シート上で push/pop が可能な、 showCupertinoSheet が追加されました。

CupertinoAlertDialog

ダークモードでの再現度が向上した様です!

Impeller

完全に Skia のサポートが削除され、 FLTEnableImpeller のオプトアウトも不可能になりました。

今後のアップデートで Skia の削除がサポートされるため、バイナリサイズが削減されます!

Android

Vulkan

再現可能なちらつきやジッターが修正されました。

Impeller のサポート率が100%に!

今までは Vulkan 非対応デバイスでは、Skia が利用されていました。

今後は、OpenGLES 上で動作する Impeller にフォールバックされる様になりました。

これにより、 Flutter が動作する Android デバイスで100% Impeller がサポートされました 🎉

Gradle

3.19 から非推奨となっていたスクリプトベースの Flutter Gradle プラグインが削除されます。

3.16以前に作成したプロジェクトで、「 You are applying Flutter’s main Gradle plugin imperatively」と表示されているプロジェクトは影響を受けるため、マイグレーションをしましょう。

Web

wasm

アプリケーションをホストする際に、特別なレスポンスヘッダでホストする必要がなくなり、またヘッダを更新することでマルチスレッドで実行できる様です。

HTML レンダラの削除

読んで字の如くです。

img タグのハンドリング

img タグが使われた際の挙動について、 webHtmlElementStrategy フラグで制御できるそうです。

DevTools

Inspector

3.27 では、 新UIフラグがデフォルトでOFFでしたがONになる様です。

x.com

また、実機ビルドの際に、ウィジェット選択モード解除のボタンが表示される様になったそうです。

地味に嬉しい〜〜〜〜!

Logging

ログの重大度やカテゴリ、ゾーンや isolate などが表示される様になり、重大度でフィルタできる様になったり初期表示までのパフォーマンスが大きく改善した様です!

EcoSystem

パッケージ開発停止

以下パッケージの開発を2025年4月30日をもって停止する様です。

  • ios_platform_images
  • css_colors
  • palette_generator
  • flutter_image
  • flutter_adaptive_scaffold
  • flutter_markdown

☕️ 最後に

いかがでしたでしょうか?

いつもの様に、この後は 3.29 適用した際のブログも書くのでお楽しみに!

そして、今回は Dartも良いアップデートが入ったのでブログ化したいと思います。

誰かのお役に立てば。

Twitterフォローお願いします

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

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

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

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

☕️ Buy me a coffee

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

コメント

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