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

Dart

概要

どうも、@daiki1003です!

さぁ、とうとうやってまいりましたね。

Flutter最新バージョン!

そろそろ4系が欲しいところではありますが、 3.32がやってきました。

早速アップデート内容見ていきましょう!

ちなみに、本記事は全てAIではなく著者が書いています。

🍁 所感

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

  • プロパティエディタ
  • iOS ペースト時のダイアログ撤廃
  • TextField のUX向上

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

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

Web

Hot Reloadが可能に!

なんといってもWebの開発ユーザにとって、これは大きいニュースですね。

flutter run コマンドに  --web-experimental-hot-reload を付けることで有効化出来るそうです。

また、その影響もあってか、 DartPad にも Reload ボタンが追加され、Hot Reloadが出来るようになりました!

Flutter

Expansible & RawMenuAnchor

これまでは開閉可能なWidgetとして、 ExpansionTile が用意されていました。

これは、 Material Theme で描画される開閉可能なWidgetです。

今回追加された、 Expansible はもっと低レイヤーであり、テーマに縛られることなく同等の機能を提供することができます。

同様に、 MenuAnchor に対して RawMenuAnchor も今回追加されました。

iOS

ペースト時のダイアログ撤廃

今までは他のアプリからペーストする際に、ダイアログが表示されていました。

それが基本的になくなったようで、これはとても嬉しいですね!

とはいえ、アプリ独自のコンテキストメニューを利用している際はまだサポートされていないようです。

関わっているプロジェクトの中では、特殊な処理を利用していたのですがこれで必要なくなりそうな予感です。

Squircle

結構待ち望んでいた人も多いのではないでしょうか?

Superellipse という名前で追加されました。

iOSのアプリアイコンで利用されているSquircle。

これにより、より忠実度の高いiOSデザインを実現できるようになったのではないでしょうか。

追加の方法としては、

  1. RoundedSuperellipseBorder を利用する
  2. ClipRSuperellipse を利用する
  3. もっと低レイヤーのものが必要であれば、Canvas.drawRSuperellipse, Canvas.clipRSuperellipse,Path.addRSuperellipseなどを利用する

CupertinoAlertDialog & CupertinoActionSheet

上記の Squircle を利用するようになったようです。

CupertinoSliverNavigationBar.search

検索画面を開く際の、アニメーションの忠実度がグッと上がりました。

確かに割と遜色ないかも!

[出典: https://medium.com/flutter/whats-new-in-flutter-3-32-40c1086bab6e]

Android

Gradle

Gradleプラグインが Groovy から Kotlin に変更されました。

これは以前から言及されていましたね。

スタイラスのサポート

iOS 同様に、Android でもスタイラスペンが利用可能になりました。

全部のジェスチャにはまだ対応していないですが、鋭意対応中とのこと。

Android 14 以上で、 TextField.stylusHandwritingEnabled などで設定すると利用できます。

Engine

Impeller

Android 9以前のデバイスではSkiaで動作していましたが、この安定性が向上しました。

Flutter 3.27ではVulkanにおけるレンダリングでのバグやクラッシュが割と多かった一方、3.27への対応の予定はないので、3.29にアップデートするかopt outするかをした方が良いそうです。

Material

CarouselController

CarouselControlleranimateToPage が追加され、より直感的に扱えるようになったり、 flexWeights プロパティが追加され、表現の幅が格段に上がりました。

TabBar

onHoveronFocusChange が追加され、より快適なUXを提供できるようになりました!

SearchAnchor & SearchAnchor.bar

viewOnOpen & onOpen コールバックが追加されました。

これにより、検索処理などの細かい制御ができるようになりました!

CalendarDatePicler.calendarDelegate

calendarDelegate が追加され、カレンダー表示時に月曜日始まりにする、などのカスタマイズが可能になりました。

Divider.borderRadius

borderRadius が追加され、特に太いDividerの際に見た目を調節できるようになりました。

Semantics

Semanticsを含むアプリのコンパイルが最大80%高速化されたようです。

スクリーンリーダーのUX、Android TalkBackのリンク認識、iOSのボイスコントロールなどが改善しました。

テキスト入力

TextField.onTapOutside の追加、テキスト選択時のコンテキストメニュー、 Autocomplete 利用時の選択肢の表示バグ修正、 FormField でエラーテキストではなく任意のWidgetを表示可能に、などさまざまな改善がされています。

DevTools

プロパティエディタ

ウィジェットのプロパティの中身などが確認できるようになったとのことで、これは相当嬉しいアップデートのように思えます。

VS Codeのサイドバーや Android Studioのツールウィンドウで表示できるとのこと。

[出典: https://medium.com/flutter/whats-new-in-flutter-3-32-40c1086bab6e]

Network

通信確認ツールのオフラインサポートがされました。

Gemini in Android Studio

Geminiの力をフル活用した開発が可能になるとのことで、楽しみですが Android Studio以外でも利用可能になることを心待ちにしております 🙏

AI

MCP

https://pub.dev/packages/dart_mcp が最近リリースされました。

Vertex AI → Firebase AI Logic

firebase_vertexaifirebase_ai パッケージとして生まれ変わりました。

これを導入することで、 GeminiImagen の両方が利用可能になります!

もし、 firebase_vertexai を利用中の方は firebase_ai に移行することが推奨されています。

AIモニタリング

Firebaseコンソール上で、Gemini APIの利用状況を詳細に確認ができるようになりました。

破壊的変更

  •  SemanticProperties.liveRegion
  • 6パッケージの開発停止
    • flutter_markkdown
    • ios_platform_images
    • css_colors
    • palette_generator
    • flutter_image
    • flutter_adaptive_scaffold
  • サポートバージョン
    • iOS12及びmacOS 10.14 (Mojave)のサポート停止
  • ExpansionTileController
  • SelectionChangedCause.scribble
  • ThemeData.indicatorColor
    • ThemeData にある xxxColor はそのうち全部 deprecated になりそうですね

最後に

いかがでしたでしょうか?気になるアップデートがある方は、 flutter upgradeまたは dartpad で試してみてくださいね!

誰かのお役に立てば。

Twitterフォローお願いします

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

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

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

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

☕️ Buy me a coffee

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

コメント

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