Upgrade to Pro — share decks privately, control downloads, hide ads and more …

I/O Extended 2023 - Dart と Flutter の新機能

I/O Extended 2023 - Dart と Flutter の新機能

Daichi Furiya (Wasabeef)

August 24, 2023
Tweet

More Decks by Daichi Furiya (Wasabeef)

Other Decks in Programming

Transcript

  1. • Material 3 • Impeller • Web • iOS •

    Android Flutter 3.10 https://medium.com/flutter/whats-new-in-flutter-3-10-b21db2c38c73 Flutter 3.10
  2. 新しいグラフィックエンジン Flutter 3.10 以降では iOS のデフォルトのレンダラーとして設定されまし た。 iOS 用にビルドされたすべてのアプリは Impeller

    を使用します。こ れによってパフォーマンスが安定し向上しました。 Impeller Flutter 3.10 https://docs.flutter.dev/perf/impeller
  3. ページ内の特定の要素に Flutter Web を埋 め込めるようになりました。 これまではページ全体に埋め込むか iframe で埋め込んでました。 レンダリングで利用している CanvasKit

    の サイズを 1/3 まで削減されました。 未使用のフォントなどのファイルサイズ削減 を行い、読み込み時間が改善されました。 パフォーマンス向上 Flutter Web の埋め込み フラグメントシェーダーのサポートがされまし た。 シェーダーのサポート Web Flutter 3.10
  4. ケーブルなしで Flutter iOS アプリを実行及 びホットリロードできるようになりました。 Xcode で iOS デバイスのワイヤレス ペアリ

    ングが成功したら、flutter run を使用して実 行できます。 iOS 上の Flutter アプリは、広色域画像の 正確なレンダリングをサポートできるように なりました。 ワイヤレスデバッグ 広色域のサポート Flutter 3.10 では、SwiftUI に合わせていく つかのアニメーション、トランジション、カラー が改善されました。 アニメーションの改善 iOS Flutter 3.10
  5. • 100% sound null safety • Record • Patterns •

    Class modifiers Dart 3 https://medium.com/dartlang/announcing-dart-3-53f065a10635
  6. 2021 年 3 月に Flutter 2 及び Dart 2.12 がリ

    リースされ、Null Safety に対応されました。現 在では pub.dev の上位 1000 パッケージのう ち 99% が Dart 3 に対応済み 100% sound null safety 99% pub.dev TOP 1000 Dart 3
  7. 複数の値を返せるようになり ました。 以前は単一の値のみだったた め、クラスにまとめるなどが必 要でした。 (double x, double y) geoLocation(String

    name) { if (name /= 'Mt.Fuji') { return (35.360, 138.717); } else { //. } } void main() { final (lat, long) = geoLocation('Mt.Fuji'); print('Location: $lat, $long'); } Dart 3 Record https://medium.com/dartlang/announcing-dart-3-53f065a10635
  8. void main() { print(descriptionDate(DateTime.now())); } String descriptionDate(DateTime dt) { return

    switch (dt.weekday) { 1 /> '月曜日ですね/.', 4 /> '金曜ですね/!', 6 /| 7 /> '土日ですね/!', _ /> 'ああ//.', }; } パターンマッチングを Switch で利用するときに本領を発揮 します。 Dart 3 Patterns https://medium.com/dartlang/announcing-dart-3-53f065a10635
  9. abstract class Vehicle {} class Car extends Vehicle {} //

    ⭕ 継承できる final class Animal {} class Dog extends Animal {} // ❌ 継承できない sealed class Editor {} class Vim extends Editor {} Editor editor = Editor(); // ❌ インスタンス化できない Editor vim = Vim(); // ⭕ インスタンス化できる Dart 3 Class modifiers https://medium.com/dartlang/announcing-dart-3-53f065a10635 クラス修飾子が増えました。 • base • final • Interface • sealed