メモ用のブログ

技術系のメモとかを書いておきます

What’s New in Flutter 2を読んだメモ

Flutter2のキャッチアップするために What’s New in Flutter 2 を読んだので、そのメモです〜

medium.com

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:

github.com

Google Mobile Ads to Beta

新しいiOSの機能

  • iOSまわりも色々新機能を追加したよ
  • xcodeを起動せずに、コマンドラインからIPAをビルドできるようになったよ
  • iOSウィジェットがいくつか追加されたよ
  • シェーダーやアニメーションまわりのパフォーマンス改善も引き続きやっているよ

新しいウィジェット: Autocomplete と ScaffoldMessenger

Add-to-Appによる複数のFlutterインスタンス

  • 既存のアプリにFlutterを追加する際の Add-to-App機能で、Flutterインスタンスを追加したときのメモリコストを大幅削減(99%ダウン)

Flutter Fix

Flutter DevTools

  • DevToolsの名前をFlutter DevToolsにしたよ
  • IDEでも例外が発生したときに、DevToolsのオプション指定の提案などをしてくれるようになった
  • 今はlayout overflowの例外にのみ対応しているけど、ゆくゆくは他の一般的な例外も同様にできるようにする予定
  • DevToolsを起動すると、タブ上にエラーバッジを表示して特定の問題を追跡しやすくしたりしている
  • もう一つの新機能は、表示されているよりも高い解像度の画像を簡単に見ることができる機能で、アプリのサイズやメモリの過剰使用を追跡するのに役立つ
    • この機能を有効にするには、Flutterインスペクタの「Invert Oversized Images」を有効する
    • 表示サイズより解像度が大幅に大きい画像が上下逆さに表示されるようになる
  • その他レイアウトまわりのデバッグが可能になったり、いろいろな機能を追加している

Android Studio/IntelliJ Extension

  • IntelliJ系のIDEのためのプラグインに色々新機能を追加したよ
  • プロジェクト作成ウィザードも新しくなった様子
  • M51
    • Flutter設定の変更
    • 新規プロジェクト作成のときはAndroidXが必須に
    • その他バグfixなど
  • 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

  • VSCode用の拡張機能も色々追加している(テストまわりとか)
  • DartのLSPサポートが投入されたので、色々便利になったっぽい
    • Dartだけじゃなく、pubspec.yamlやanalysis_options.yamlファイルの補完もサポートされている

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対応を早く進めなくては💨