Flutter2のキャッチアップするために What’s New in Flutter 2 を読んだので、そのメモです〜
Web
- webのサポートが安定版になったよ
- HTMLレンダラーに加えて、CanvasKitベースのレンダラーも追加したよ
- これでコードの再利用性も高まる
Sound Null Safety
- Dart 2.12に追加された機能で、Flutter2でも完全対応された
- nullable型とnon-nullable型を区別することで型システムを強化してる
- null safeのパッケージ開発者はマイグレーションガイドを見て移行してね
Dartのドキュメントでもあった Dart is a sound language.
の sound
の意味がよくわからなかったけど、堅牢とか健全とかいうニュアンスっぽい
refs: types - What is a sound programming language? - Stack Overflow
Desktop
- 早期リリースフラグ(β版?)として安定版でも利用できるようになったよ
- 今年後半に安定版リリースの予定
- テキスト編集やマウス操作の検知、スクロールバーあたりが強化されたっぽい
- コマンドライン引数の処理が可能になった
- IMEも有効にできるようになった
Flutter Folio scrapbooking app
- いろんな画面サイズや入力方法に対応するにはどうしたらいいか、という疑問に答えるために、Flutter Folioスクラップブックアプリを作成したよ
- 単一コードベースで複数のプラットフォームでいい感じに動作させる簡単な例になってる
- このようなアプリをプラットフォーム適応型と呼んでる
- 複数プラットフォーム対応するときに困ったらソースコードが参考になるかも
refs:
Google Mobile Ads to Beta
新しいiOSの機能
- iOSまわりも色々新機能を追加したよ
- xcodeを起動せずに、コマンドラインからIPAをビルドできるようになったよ
- 他iOSウィジェットがいくつか追加されたよ
- シェーダーやアニメーションまわりのパフォーマンス改善も引き続きやっているよ
新しいウィジェット: Autocomplete と ScaffoldMessenger
- AutocompleteCoreとScaffoldMessengerという2つの新しいウィジェットが追加された
- AutocompleteCoreはオートコンプリート機能のためのウィジェット
- ScaffoldMessengerはSnackBar関連の問題解決のためのウィジェット
Add-to-Appによる複数のFlutterインスタンス
- 既存のアプリにFlutterを追加する際の Add-to-App機能で、Flutterインスタンスを追加したときのメモリコストを大幅削減(99%ダウン)
Flutter Fix
- Flutter Fix = Flutter APIの改善をつづけていく際に開発者をサポートするツール類
dart fix --dry-run
でプロジェクト全体の修正項目を確認できる (適用までしたいときはdart fix --apply
- IDEでもインタラクティブに修正することが可能
- 非推奨APIの削除についてのポリシー
- https://medium.com/flutter/deprecation-lifetime-in-flutter-e4d76ee738ad
- 1年または4回の安定版リリースのうち、いずれか長い方
- https://medium.com/flutter/deprecation-lifetime-in-flutter-e4d76ee738ad
Flutter DevTools
- DevToolsの名前をFlutter DevToolsにしたよ
- IDEでも例外が発生したときに、DevToolsのオプション指定の提案などをしてくれるようになった
- 今はlayout overflowの例外にのみ対応しているけど、ゆくゆくは他の一般的な例外も同様にできるようにする予定
- DevToolsを起動すると、タブ上にエラーバッジを表示して特定の問題を追跡しやすくしたりしている
- もう一つの新機能は、表示されているよりも高い解像度の画像を簡単に見ることができる機能で、アプリのサイズやメモリの過剰使用を追跡するのに役立つ
- この機能を有効にするには、Flutterインスペクタの「Invert Oversized Images」を有効する
- 表示サイズより解像度が大幅に大きい画像が上下逆さに表示されるようになる
- その他レイアウトまわりのデバッグが可能になったり、いろいろな機能を追加している
Android Studio/IntelliJ Extension
- IntelliJ系のIDEのためのプラグインに色々新機能を追加したよ
- プロジェクト作成ウィザードも新しくなった様子
- M51
- M52
- Android Studio 4.2以降、新しいプロジェクト作成ウィザードになった
- M53
- プロジェクト作成ウィザードでプラットフォーム選択できるようになった
- Render overflowエラーが出たとき、通知をクリックすると原因のウィジェットがDevToolsに表示されるようになった
- 今までコードの横に色のプレビューが強制表示されていたけど、カラーアイコンをクリックすると、デフォルトのカラーピッカーが立ち上がるようになった
- ANSIカラーエスケープシーケンスを使ってIDEのコンソールの出力をカラー化することができるようになった
- Flutter SnapのパスがLinuxの既知のSDKパスのリストに追加されたので、LinuxユーザはFlutterの設定が簡単になった
- DevToolsのインストール時に問題が起きたとき、再インストールできるようになった
- M54
- DevToolsのサーバー起動を効率化
- flutter attachの引数用のフィールドを追加
- canary buildのベースが安定版に切り替わったので、なんか色々対応が必要らしい(よくわからなかった)
Visual Studio Code Extension
DartPad updated to support Flutter 2
- DartPadもFlutter2サポートされるようになった
Ecosystem updates
- プラグインまわりも色々アップデートされているので、以前試してうまく行かなかった人はまた試してほしい
- アプリクラッシュのレポートがほしいときは、sentryがFlutterアプリ用のSDKを公開したので検討するといいかも
- プラグインたくさんあって検討が大変になってきたので、いろいろな指標や品質が高いパッケージに"Flutter Favorite"マークをつけたよ
- pub.greenサイトで最近のバージョンで動くかもチェックできるようになったよ
目玉としてはWebが安定版になったのと、Desktopがベータ版になったあたりかなぁという印象。あとはDartがNULL安全になったので、Flutter2でもそれに完全対応したよというあたりも大きな変更っぽい。
あとは、前々からオートコンプリート機能実装のときに結構パッケージを探したりして手間がかかっていたので、 AutocompleteCore
の追加は気になるところだなー。
パッケージ探しもなかなか大変だったので、 "Flutter Favorite"マークは参考になりそうで助かる。
ひとまず自作アプリのFlutter2対応を早く進めなくては💨