Slide 1

Slide 1 text

Tokyo, Japan 2023 Flutter/Dart Summary

Slide 2

Slide 2 text

1 月 5 月 8 月 11 月 Flutter Flutter 3.7 Flutter 3.13 Flutter 3.10 Flutter 3.16 Dart 2.19 3.0 alpha Dart 3 Dart 3.2 Dart 3.1 Dart 2023 年の Flutter/Dart アップデート

Slide 3

Slide 3 text

Impeller

Slide 4

Slide 4 text

新しいグラフィックエンジン これまでの Skia ではアプリ初回起動時にシェーダーコ ンパイルが行われ初回起動時は数十フレームの欠落 することがあり、それ以降はキャッシュされ滑らかなアニ メーションになります。 しかし、Android はそれが可能だが iOS の場合はアプ リを最初から開くたびに行われてしまいます。(キャッ シュファイルを埋め込むこともできるが) https://docs.flutter.dev/perf/impeller Impeller

Slide 5

Slide 5 text

https://docs.flutter.dev/perf/impeller Impeller (iOS) Flutter 3.10 で iOS のデフォルトレンダラーとして設定 されました。 iOS 用にビルドされたすべてのアプリは Impeller を使用します。これによってパフォーマンスが 安定し向上しました。 ※ Android のデフォルトレンダラーは Skia のまま

Slide 6

Slide 6 text

Flutter 3.16 で Android の Stable channel でプレ ビュー版が公開されました。 Vulkan デバイスではパフォーマンスが向上してきまし たが、OpenGL デバイスではまだ動作が不安定となり ます。 ※ しかしアニメーションの部分が現状のほうがパフォーマンス高い https://docs.flutter.dev/perf/impeller Impeller (Android)

Slide 7

Slide 7 text

https://www.youtube.com/watch?v=_5CIATSDSPI

Slide 8

Slide 8 text

余談ですが... Skia Antti-aliasing behaviour https://github.com/flutter/flutter/issues/14288

Slide 9

Slide 9 text

https://github.com/flutter/flutter/issues/14288 Skia はアンチエイリアは標準の動作として 余談ですが... Skia Antti-aliasing behaviour

Slide 10

Slide 10 text

Material 3

Slide 11

Slide 11 text

最新のマテリアル デザイン仕様と一致するようになりま した。新しいコンポーネントとテーマや変更されたコン ポーネントなどが含まれています。 Material 3

Slide 12

Slide 12 text

画像などからカスタムスキームなどを作成す ることができるようになりました。 ColorScheme Material 3

Slide 13

Slide 13 text

Secondary Tab Bar ColorScheme Material 3

Slide 14

Slide 14 text

Secondary Tab Bar BottomSheet Material 3

Slide 15

Slide 15 text

Web

Slide 16

Slide 16 text

https://flutter-web-embed.web.app Flutter Web でも Flutter のフラ グメントシェーダーをサポートを利 用できるようになりました。 Fragment Shaders for Web Web

Slide 17

Slide 17 text

iOS

Slide 18

Slide 18 text

ケーブルなしで Flutter iOS ア プリを実行及びホットリロードで きるようになりました。 Xcode で iOS デバイスのワイヤレス ペアリングが成功したら、 flutter run を使用して実行でき ます。 iOS 上の Flutter アプリは、広 色域画像の正確なレンダリン グをサポートできるようになり ました。 ワイヤレスデバッグ 広色域のサポート Flutter 3.10 では、SwiftUI に 合わせていくつかのアニメー ション、トランジション、カラーが 改善されました。 アニメーションの改善 iOS

Slide 19

Slide 19 text

Android

Slide 20

Slide 20 text

CameraX のサポート Jetpack の CameraX を利用す ることが可能になり、豊富なカメ ラ機能を簡単に追加することが できるようになりました。 Android

Slide 21

Slide 21 text

Dart 3

Slide 22

Slide 22 text

Record Patterns Class modifiers 01 02 03 Dart 3 Skwasm Dart & Flutter DevTools Extensions 04 05

Slide 23

Slide 23 text

複数の値を返せるようになりま した。 以前は単一の値のみだったた め、クラスにまとめるなどが必 要でした。 (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'); } Record https://medium.com/dartlang/announcing-dart-3-53f065a10635 Dart

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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(); // ⭕ インスタンス化できる Class modifiers https://medium.com/dartlang/announcing-dart-3-53f065a10635 クラス修飾子が増えました。 ● base ● final ● Interface ● sealed Dart

Slide 26

Slide 26 text

aaa Dart Web and Wasm

Slide 27

Slide 27 text

Thank you X → @wasabeef_jp GitHub → wasabeef