Google社のクロスプラットフォームUIキット Flutter 3.27の最新バージョンは、改善されたCupertinoウィジェットによりAppleのUIガイドラインへの準拠が向上し、CarouselView
、リストの行と列、ModalRoutes
トランジションなどを含む多くの変更をもたらした。さらに新リリースではImpellerレンダリングエンジンがデフォルトとなり、パフォーマンスの向上、計測サポート、並行処理のサポートなどが実現した。
Cupertinoはウィジェットのコレクションで、Appleのヒューマンインターフェースガイドラインに厳密に準拠している。Flutter 3.27では、CupertinoCheckbox
、CupertinoRadio
、CupertinoSlidingSegmentedControl
を含むいくつかのウィジェットを更新して忠実度を高めている。また、CupertinoCheckbox
およびCupertinoSwitch
の設定可能性が拡張され、CupertinoButton
をiOS 15で導入された最新のカスタマイズオプションと同等にしている。その他の改善点はCupertinoActionSheet
、CupertinoContextMenu
、CupertinoDatePicker
、CupertinoMagnifier
に影響を与えている。
AndroidネイティブのMaterial UIに関して、Flutter 3.27はflexWeights
パラメータを使用してカルーセルビュー内で占める相対的なアイテムの重みを指定することでより動的なレイアウトを定義できるよう、CarouselView.weighted
でCarouselView
を拡張した。さらにSegmentedButton
は垂直に配置できるようになり、いくつかのウィジェットがMaterial 3の仕様により適切に整列するように修正された。
Flutter 3.27はModalRoutes
、テキスト選択、行と列の間隔も改善した。ナビゲーター領域全体を占有して以前のルートとのインタラクションをブロックする特徴を持つModalRoutes
はあるルートからの退出トランジションと新しいルートへの進入トランジションを同期させることができるようになり、スムーズに連携するようになっている。テキスト選択ではLinux、macOS、Windows で Shift + クリックジェスチャーをサポートし、クリックした位置まで選択範囲を拡張できるようになった。行と列はspacing
パラメータを使用できるようになり、互いにオフセットしやすくなった。
1年以上のプレビューを経て、新Impellerレンダリングエンジンが最新のAndroidデバイスでデフォルトに昇格し、旧レンダリングエンジンのSkiaを置き換えた。互換性の問題が発生した場合に備えてSkiaはオプトインとして引き続き利用可能である。Impellerは、シェーダーやリフレクションの構築、パイプラインステートオブジェクトの事前作成など、Skiaが実行時に行っていた多くのタスクをコンパイル時に実行するようになり、パフォーマンスをより予測可能にするためにキャッシングを改善している。また、テクスチャやバッファにラベルを付け、レンダリングパフォーマンスに影響を与えることなくアニメーションをディスクにキャプチャできるようにすることでデバッグサポートも向上している。必要に応じてImpellerは単一フレームのワークロードを複数のスレッドに分散させてパフォーマンスを向上させることができる。
今後、私たちはAndroidにおけるImpellerのパフォーマンスと忠実度の改善を続けていきます。また、SkiaのフォールバックをなくすためにImpellerのOpenGLバックエンドを本番環境に対応させる予定です。
その他注目すべき改善点として、iOSでのレンダリングパフォーマンスの向上、Swift Package Managerのサポート、さらにAndroidにおけるエッジツーエッジ および フリーフォームサポートがある。全体の詳細を知りたければ公式発表をお見逃しなく。