12月12日、Flutter - Mediumで「Flutter 3.27の新機能(What’s new in Flutter 3.27)」と題した記事が公開された。この記事では、Flutter 3.27の新機能や改善点について詳しく紹介されている。
以下に、その内容を簡潔にまとめて紹介する。
1. Cupertinoの改善
CupertinoCheckbox
とCupertinoRadio
の改善
- サイズ、色、線幅、押下時の挙動が改良された。
CupertinoRadio
、CupertinoCheckbox
、CupertinoSwitch
は、マウスカーソル、セマンティックラベル、サムネイル画像、塗りつぶし色のカスタマイズが可能になった。CupertinoCheckbox
の非アクティブ状態の色指定は非推奨となり、CupertinoSwitch
のトラックカラーが名称変更された。
CupertinoSlidingSegmentedControl
の改善
- サムネイルの半径、セパレーターの高さ、パディング、シャドウ、スケール配置が変更され、よりネイティブUIに忠実な見た目となった。
- 個別のセグメントの無効化や比率レイアウトのサポートが追加された。
CupertinoNavigationBar
とCupertinoSliverNavigationBar
の背景透過
CupertinoNavigationBar と CupertinoSliverNavigationBar の背景は両方とも、その下のコンテンツがスクロールされるまで透明になった。
これにより、スライバーナビゲーションバーは、展開された状態では背景と同じ色になり、折りたたまれた状態ではカスタマイズ可能な別の色になる (スクロール時に両方の色を切り替える機能も追加された)。
CupertinoButton
の改善
CupertinoButton.tinted
コンストラクタが追加され、半透明の背景を持つボタンが作成可能になった。- iOS 15+のボタンスタイルを適用する
sizeStyle
プロパティが追加された。
- キーボードショートカットを使用したアクションの実行が可能になり、**
onLongPress
ハンドラー**が追加された。
その他の改善
CupertinoPicker
とCupertinoDatePicker
は、タップしたアイテムへスクロールするように改善。
CupertinoAlertDialog
はスライドタップジェスチャーに対応。CupertinoContextMenu
は、画面を超えるアクションがスクロール可能に。
2. Materialデザインの改善
CardTheme
, DialogTheme
, TabBarTheme
の正規化
- これらのテーマが他のMaterialコンポーネントと一貫性を持つようリファクタリングされた。
CarouselView.weighted
の追加
flexWeights
パラメータを使い、動的なレイアウトを実現可能になった。
新機能の追加
SegmentedButton
に**direction
プロパティが追加され、垂直方向の整列**が可能になった。
ButtonStyleButton
(ElevatedButton
など)に、アイコン関連のプロパティが追加された。
3. ルート遷移の改善
ModalRoutes
は、異なるページ遷移の同期を行うための新しい出口トランジションビルダーを提供するようになった。
4. テキスト選択の改善
- Windows、macOS、LinuxでShift + クリックによるテキスト選択が可能になった。
SelectableRegion
は、テキスト選択のリセットをサポート。- ウィンドウのリサイズ後でも選択が維持され、テキスト外のクリック時にも選択解除が行えるようになった。
5. Row
とColumn
のスペーシング
Row
やColumn
の子要素間に固定のスペースを追加するspacing
プロパティが導入された。
6. Android向けの改善
Impellerがデフォルトのレンダリングエンジンに
- Androidの最新デバイスではSkiaからImpellerへの切り替えが行われた。
- 旧デバイスでは引き続きSkiaが使用されるが、オプトアウトも可能。
Android 15+のエッジツーエッジモード
- Android 15+では、アプリがデフォルトでエッジツーエッジのモードで実行される。
Kotlinビルドスクリプトのサポート
build.gradle.kts
ファイルがサポートされ、Kotlinビルドスクリプトへの移行が進められている。
7. iOS向けの改善
- iOSデバイスのMetalレンダリングサーフェスが改善され、フレームの安定性が向上した。
DisplayP3
カラースペースがサポートされ、より豊かな色表現が可能になった。
8. Web向けの改善
- SafariとFirefoxでは、静的な画像のデコードがWebAssemblyではなく
<img>
要素を使用するようになり、メモリ使用量が削減された。 - CanvasKitとSkwasmのレンダラーで、レンダリングの問題が修正された。
9. Swift Package Managerのサポート
- FlutterはSwift Package Manager (SPM) を正式にサポートし、Appleプラットフォーム向けのインストールが簡素化された。
10. DevToolsとIDEsの改善
- iOSのディープリンク設定の検証機能が追加された。
- ネットワークデータの
.har
ファイルとしてのエクスポート機能が追加された。 - クラッシュ時にもメモリツールデータが保持されるようになった。
11. 実験的な機能
- 新しいFlutter Inspectorが導入され、ウィジェットのツリー表示が改善。
- DevToolsのWebAssembly (WASM) ビルドが試験的に提供された。
12. 破壊的変更と非推奨
- Material Design 3トークンが更新され、いくつかの色のマッピングが変更された。
Chip
のボーダー色がColorScheme.outline
からColorScheme.outlineVariant
に変更された。- Objective-CのiOSプロジェクト作成機能が非推奨となり、今後はSwiftが推奨される。
- Dart SDK 3.0よりも古いバージョンのIDEサポートが段階的に削除される。
13. エコシステムの改善
- Pub.devでは、30日間のダウンロード数が表示され、インタラクティブなスパークラインチャートが導入された。
- Pubワークスペースの導入により、単一のリポジトリ内で複数のパッケージを管理できるようになった。
- FlutterパッケージのGitHubからの自動公開が可能になった。
interactive_media_ads
プラグインがリリースされ、マルチメディア広告の統合が容易になった。
まとめ
Flutter 3.27は、CupertinoやMaterialコンポーネントの改善、Impellerのデフォルト化、SPMのサポートなど、開発者の生産性を向上させる多くの新機能を提供している。開発者は、flutter upgrade
コマンドを実行して、これらの新機能を体験することができる。
詳細は[What’s new in Flutter 3.27]を参照していただきたい。