Flutter 2.8, Dart 2.15のアナウンスが12/9の朝、行われました。
本記事は以下の記事を要約し、
バージョンアップによる変化の概要を紹介します。
参考にした記事はこちら。
なるべく原文の意味が通るようにまとめてはいますが、 あくまで要約です。 気になる部分、引用したい部分については必ず原文を確認するようお願い致します。
Flutter2.8の概要
- エンジンとFlutter Dev'Tool両者のパフォーマンスの改善
- Flutter のGoogle Mobile Ads SDK のStableリリース
- WebView 3.0
- Firebaseのたくさんの新しい機能や改善
- Flutter の主要なパッケージの新たなバッチ
- Desktopの安定版リリースに向けて、多数の更新
- より多くのパッケージのサポートを受けられるようになた、DartPadの新バージョン
これらが今回のアップデートで追加されたそうです。
2,424のプルリクエストがマージされ、2,976のissueがCloseされたとのことでした。
パフォーマンス
アプリケーションの起動待ち時間の改善が行われました。
とても大きいアプリのGoogle Payに対して改善をテストしたところ、起動の遅延時間が
ローエンドのAndroid デバイスで50%、ハイエンドのデバイスで10%の改善されたそうです。
他に、DartVMのガベージコレクションポリシーに対してFlutterの関わり方の改善などが行われました。
Flutter2.8のリリースでAndroidに対し、Dart VMのservice isolateは個別にロードできるバンドルに分割されるようになり、
service isolateが必要になるまでに、最大40MBのメモリを節約できるようになりました。
(この部分理解が甘いです。メモリの使い方を工夫してより節約できるよ、ってことらしいです。)
また、Flutter 2.8 stable リリースによって、
"Android systrace レコーダー"が起動時に有効になっている場合、リリースモードであったとしてもイベントをトレースできるようになりました。
Flutter DevTools
パフォーマンスの問題をデバッグするために、UIジャンクを診断する"Enhance Tracing"機能が追加されました。
また、起動時のパフォーマンスをプロファイリングする新しいサポートが追加されました。
Web platform views
Flutter Web でPlatform viewのパフォーマンスの向上が行われました。
パフォーマンスを落とすことなく、HtmlElementView
を複数使うことが可能です。
(Flutter Webに明るくないので理解が甘いです。詳細は原文をご覧ください。)
パッケージやプラグインのリリース
Google Mobile Ads SDK for Flutterが11月にリリースされました。
WebView 3.0がリリースされました。
Androidに対してBreaking Changeがあるため、バージョンを上げたそうです。
Hybrid Composition モードがデフォルトになりました。
また、新たなプラットフォームとして、Webのサポートを開始しました。
(ただし、現在の実装ではいくつかの制限があるそうです。詳細は以下)
https://pub.dev/packages/webview_flutter_web
Flutter Favorite
Flutter Favoriteに新たなパッケージが追加されました。
- router パッケージの
beamer
,routemaster
,go_router
- SQLite用パッケージの
drift
(旧moor
) freezed
dart_code_metrics
- GUIパッケージの
flex_color_scheme
,flutter_svg
,feedback
,toggle_switch
,auto_size_text
プラットフォーム特化のパッケージ
パッケージを作成する際、100%DartでPlatformに特化した機能を実装することができるようになりました。
(この部分も理解が曖昧です。詳細は原文をご覧ください。)
Firebase
FlutterとFirebaseを使ってアプリを作成するのがより簡単になりました。
項目は以下です。
- 全てのFlutterFire プラグインがStableに
- いくつかのFirebase サービスがDartPadをサポート
- 認証とLive Firestore Queriesに対してUI構成をより簡単にする新たなライブラリ
- Alpha版として、新たなFireStoreのObject/Documentのマッピングが利用可能に
詳細、一部抜粋して記載します。
DartだけでFirebaseの初期化が可能になりました。
flutterfire
CLIツールでそれぞれのプラットフォームの初期化オプションデータ構造を集められるようになりました。
このツールで新しいFirebaseプロジェクトを作成することが可能です。
また、このツールを使えばAndroidのjson
ファイルや、iOSのplist
ファイルをダウンロードして追加する作業が不要となります。CloudFireStoreなどで、DartPadをドキュメントに埋め込めることが可能になりました。
flutterfire_uiパッケージを使うことで、少量のコードで基本的な認証を作成できるようになりました。
SigninScreen
widgetでEmailやGoogle認証を設定できます。
イメージや、テキストの追加も可能です。
デスクトップにも対応しています。
(コードや画像付きで紹介されていました。詳細は原文をご覧ください。)
FirestoreListView
という、FireStoreからデータを取得するリストビューも追加されています。
FirestoreDataTable
という、FireStoreの値をテーブル表示し、修正も可能にするWidgetが追加されています。
詳細は以下から
Firestore Object/Document MappingのAlpha版がリリースされました。
型安全で構造化されたオブジェクトとメソッドを通して、よりシンプルなFirestoreの利用で、
より生産性を高くすることを狙っています。
コード生成を使うことで型安全な方法でデータをモデル化することを可能にすることで
ドキュメントやコレクションを操作するための構文をFirestore Object/Document Mappingは改善します。
詳細は以下をご覧ください。
Desktop
Windows,macOS,LinuxのStableリリースに向けて大きな一歩を踏み出した、とのことです。
国際化とローカライゼーションのサポートとして、中国語IMEサポート、韓国語IMEサポート、漢字IMEサポートが追加されました。
Windowsのアクセシビリティに対するサポートも構築されています。
Firebaseプラグインについても実装を検討しています。
DartPad
23ものパッケージがimport可能になりました。
今後も新しいパッケージを追加予定です。
また、DartPadがStable Channelだけでなく、最新のbeta channelも利用可能になりました。
古いStable channelも同様に利用可能です。
Dev channelの削除
dev channelの利用者がかなり少なく、更新も止まっているため、正式に廃止するプロセスを開始しました。
今後数ヶ月以内にdev channelを廃止します。
重大な変更
期限切れになった非推奨のAPIの削除を除いて、重大な変更はありません。
まとめ
かなり多くの紹介でしたが、いかがでしたでしょうか。
個人的にはFirebaseのサポートが熱いな、と思いました。
早速使ってみようと思います。
本記事が参考になれば幸いです。