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

Dart

概要

どうも、@daiki1003です!

さぁ、待ちに待った3.19が来ましたね〜!
本記事では何が新しくリリースされたのか簡単にまとめていきたいのでよろしくお願いします!

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

Flutter/Framework

スクロール

とうとう来てしまいました…。
Flutter界隈で有名なあの方法が使えなくなってしまいます。
今手元で動いているアプリがFlutterなのかどうなのか?

「二本指でスクロールしてスクロール速度が2倍になるかどうか?」

でわかるという方法が使えなくなります…!

MultiTouchDragStrategy.latestPointerによって、デフォルトの挙動を変えることができるそうです。
詳しくはこちら。

Default multitouch scrolling
ScrollBehaviors will now configure how Scrollables respond to multitouch gestures.

また、二次元スクロールやSingleChildScrollViewなどの挙動も改善されている様です。

アニメーション

AnimationStyle class - animation library - Dart API
API docs for the AnimationStyle class from the animation library, for the Dart programming language.

MaterialApp, ExpansionTileなどなどデフォルトのアニメーションのカーブや秒数などをoverrideするための、AnimationStyleウィジェットが追加されました。

SegmentedButton.styleFrom

他のボタンと同様に SegmentedButtonにもstyleFromメソッドが追加されました。

Switch.adaptive

メソッドを使うことでAndroid/iOSそれぞれの見た目に適応したコンポーネントを表示できていました。
ですが、内部実装的にはcupertinoライブラリのCupertinoSwitchに依存していました。

その依存関係がなくなったそうです!

Semantics

SemanticsProperties class - semantics library - Dart API
API docs for the SemanticsProperties class from the semantics library, for the Dart programming language.

あまりここは明るくないのですが。
SemanticsProperties識別子が追加されたそうです!

Add support for exposing accessibility identifier as resource-id on Android by bartekpacia · Pull Request #47961 · flutter/engine
Accompanying framework PR: flutter/flutter#138331 This PR implements support for exposing SemanticsProperties.identifier on Android as resource-id. Mainly targe...
Add accessibility identifier to `SemanticsProperties` by bartekpacia · Pull Request #138331 · flutter/flutter
This PR adds String? identifier to Semantics and SemanticsProperties. The identifier will be exposed on Android as resource-id and on iOS as accessibilityIdenti...

TextFieldが、MaterialStatesControllerをサポートし、MaterialStateの変更を検知する事ができる様になりました!

UndoHistoryバグ修正

日本語キーボードでUndoHistoryundo/redo履歴が消えることがある問題が修正されました。

日本人による修正かなと思ったらやはりそうでした!

toshiaki-h - Overview
toshiaki-h has 15 repositories available. Follow their code on GitHub.

Flutter/Engine

Impeller

ほぼ全てのAndroidImpellerが正常に動作する様になりました!
また、シェーダの特殊化定数をサポートしたり、backdrop filterblurのパフォーマンスが向上したそうです!
描画の複雑度にもよるが20〜70%くらいの改善がされたとのこと!

GPU tracing

Debug/Profileビルド時にGPUTracerという項目が追加されました!
Apple系デバイスとVulkanが使われているAndroidデバイスのみです。

VSCodeFlutterサイドバーで現在有効になっていないプラットフォームを追加する機能が有効になり、またDevToolsサイドバーで外部ブラウザでDevToolsが開ける様になりました!

Desktop

Windows Arm64サポート

Arm64

に対応し、対応端末でよりパフォーマンスが出る様になったそうです!
そしてまた鋭意開発中とのこと。

Dart

Glyph

どうやら絵文字ともうちょっと向き合える時間が来たのかもしれない?
dart:uiParagraphGlyphInfoというクラスを返してくれるメソッドが生えた様です。

iOS

とうとう、フォントがAppleっぽくなります!
画面の大小によってフォントの出し分けを出来ていなかったのが修正された様です。

privacy manifest

春以降に申請する際に、必須となったprivacy manifestを含んだそうです。

Android

Deeplinkバリデーター

僕も経験ありますが、deeplinkの実装にはAndroidManifestをいじる必要がありますが、変更が終わった後に、これで実際に上手くいくのかに自信が持てません笑

今回のアップデートで、DevToolsDeep Linksタブが追加され、実装ガイドもしてくれるそうです!
すご!

今回はwebによるAndroidのみが対応ですが、今後webによるiOSapp内での両プラットフォームへの対応も予定しているそうです!

Share.invoke

Textを範囲選択した際に出てくるShareコンテキストメニューが追加されました!

その他にも、各OSでコンテキストメニューが足りてないのでその拡充に動いているそうです。

Texture Layer Hybrid Composition(TLHC)

Google Mapsとテキスト拡大鏡をTLHCモードで動く様になりました。
簡単に言うと、パフォーマンスが良くなったよと言うことです。

テキスト選択ツールバー

カスタマイズできる様になっており、TextFieldもそのカスタマイズされたものを参照している様です。

AI関連

Gemini SDK beta

やっぱり、来ましたね!

google_generative_ai | Dart package
The Google AI Dart SDK enables developers to use Google's state-of-the-art generative AI models (like Gemini).

こちらのパッケージも新しく追加されました。
とはいえ、まだ0.2.0ではありますね。

すぐにでも始めたい方はこちらから。

Harness the Gemini API in your Dart and Flutter Apps
Introducing the Google AI Dart SDK
Quickstart: Get started with the Gemini API in Dart or Flutter apps  |  Google AI for Developers
Learn how to use the Gemini API with Dart to generate text from both image and text prompts and to build a chat interaction.

Deprecation

Windows7 and 8

Flutter3.19Dart3.3からWindows7, 8のサポートを終了するそうです。

Impeller ditheringフラグ

Paint.enableDitheringが削除されます。

iOS11

iOS11のサポートも終了するそうです。
十分ではありますが、Androidと比べて、iOSのサポートはわりかし短めですね笑

最後に

個人的には、地味にiOSのフォントが嬉しかったりGeminiが楽しみだったり、Deeplinkバリデータが嬉しかったりします。

今後もFlutterのアップデートが楽しみですね!

誰かのお役に立てば。

Twitterフォローお願いします

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

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

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

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

☕️ Buy me a coffee

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

コメント

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