2. Efficient 2D scrolling widgets (e.g. tables and trees), to improve the performance of applications with this kind of interface. 3. Multiple windows, especially for desktop platforms, because this is a very highly requested feature. 4. Platform Views on macOS and Windows, by popular demand. 5. Drag and drop, also by popular demand. 6. Wireless debugging on iOS, our second-most-requested feature. 7. Custom "flutter create" templates, which makes it much easier for third-parties (e.g. the Flame engine) to bootstrap developers. 8. Supporting element embedding (see also #32329), which allows Flutter content to be added to any standard web <div>, by popular demand. Engineering Roadmap Features Intro 12
enable you to build beautiful native apps for any platform. This session covers breakthrough graphics performance, seamless integration, emerging architectures and platforms, and developer experience. What's new in Dart and Flutter Section 01 17
Material Design 2. Design for every device with Flutter and Material 3 100% Sound null safety New : Patterns New: Class modifiers Material 3 Dart 3 UI Upgraded to use Material 3 Trace Viewer based on Perfetto DevTools 01 02 03 Section 01 19 What's new in Dart and Flutter 📌 Section Pick 📌 Section Pick
Flutter Breakthrough graphics performance. New Rendering Engine Production ready for iOS 연관 세션 Tour of Impeller - Flutter's new rendering engine Fragment Shaders for Web Impeller Flutter Web Wasm (WebAssembly) 연관 세션 Evolving Flutter's support for the web Wasm 04 05 06 Section 01 20 What's new in Dart and Flutter
Flutter • 100% Sound Null Safety ◦ Reduce run-time errors from nulls ◦ Smaller compiled output ◦ Improved performance • New Patterns → Modern programming ◦ Structured data with records ◦ Pattern matching • New Class Modifiers
Flutter • New: Records & Patterns ◦ Records는 Dart SDK 3.0 버전에 새로 적용된 Type ◦ Pattern은 Dart 언어의 a syntactic category ▪ statements and expressions ▪ match a value, destructure a value New Feature
Flutter • What are Records ◦ First-class : Store in variables, return from functions ▪ 변수를 저장하고, 함수로부터 값을 반환, 제네릭 타입 사용 ◦ Objects: Subtype of Record which extends Object ◦ Value semantics: Automatic == and hashCode ◦ Optimizable: No persistent identity → Compiler can optimize away
speakerInfo(Map<String, dynamic> json) { return IO23Seoul( json['name'] as String, json["part"] as String, json['track'] as int, ); } var info = speakerInfo(io23SeoulSpeaker); var name = info.name; var part = info.part; var track = info.track; 28
as String, json["part"] as String, json['track'] as int, ); } var info = speakerInfo(io23SeoulSpeaker); var name = info.$1; var part = info.$2; var track = info.$3; 29
int count; CheeseBurger(this.count); } class DoubleCheeseBurger extends Burger { final int count; DoubleCheeseBurger(this.count); } int calculateCheese(Burger burger) => switch (burger) { CheeseBurger(count: int c) => 1 * c, DoubleCheeseBurger(count: int c) => 1 * c, }; 37
Flutter 다양한 조합.. ◦ abstract ◦ base ◦ final ◦ interface ◦ sealed ◦ mixin Declaration Construct? Extend? Implement? Mix in? Exhaustive? class Yes Yes Yes No No base class Yes Yes No No No interface class Yes No Yes No No final class Yes No No No No sealed class No No No No Yes abstract class No Yes Yes No No abstract base class No Yes No No No abstract interface class No No Yes No No abstract final class No No No No No mixin class Yes Yes Yes Yes No base mixin class Yes Yes No Yes No abstract mixin class No Yes Yes Yes No abstract base mixin class No Yes No Yes No mixin No No Yes Yes No base mixin No No No Yes No
for every device that Flutter supports. Layouts can be quite different depending on the platform they are running on and what input devices are currently active. Deep dive into the various ways you can create with adaptive layouts, expressive color and typography, and theming the many widgets available for Material 3. Theming does not have to be hard when a design can be broken down into reusable widgets. Design for every device with Flutter and Material 3 Section 02 42
the default 2023-07-13 기준 Master channel: 현재 적용 완료 Beta 채널: 8월 중 적용 (현재 적용된것으로 보임) Stable 채널: beta 채널 적용 이후 https://github.com/flutter/flutter/issues/127064 Access: 2023-07-22
and operate full-stack apps for many platforms, including Flutter. In this session you will learn about the latest improvements that we made and what we’re working on for the future. What's new in Firebase's Flutter Section 03 56
FlutterFire that make it easy to complement Flutter apps with our cloud backend, as well as documentation and guidance for hosting Dart in the cloud. It includes supporting Cloud account teams who are selling full-stack solutions to their customers. • For Android, we help customers “shift left”: giving iOS developers a path to build on a supported Google stack that also targets Android. This also includes the sizable revenue stream we are building for in-app purchases with Play. In 2023, we will continue to enthusiastically build pathways to help developers light up on Android, in collaboration with the Android team. • For Ads, we continue to partner on breadth opportunities, with first-party support for a broad set of mobile ads formats, targeted campaigns around casual gaming, and product investments around deep-linking. In 2023, we will broadly roll out our work with news publishers to offer a custom toolkit that incorporates ads and Firebase. • For Geo, we will partner with them to grow our maps plugin, including adding support for client-side directions, and integration into the Google Maps developer docs. Flutter as an on-ramp for Google Section 03 57 Source: Flutter 2023 Strategy What's new in Firebase's Flutter Strategy
eliminating shader compilation jank and providing predictable performance. This talk will discuss the design of Impeller and how it fits into the broader architecture for Flutter. This includes a tour of Impeller’s sub frameworks, and a demonstration of how lower level APIs are used in Flutter applications. The session will also discuss how Impeller enables new experiences, like 3D support. Flutter's new rendering engine Section 04 62
Slow Frame • FPS (Frame per second ) = 초당 프레임 수 • 60 FPS 는 1초에 60 개의 프레임을 출력 • 1개의 프레임을 렌더링하는데 걸리는 속도는? ◦ 16ms 내외로 처리가 가능해야함 60fps의 경우 16ms 내로 처리하는지 못하는 경우 중간 중간 프레임 처리를 놓치는 경우 UI Jank, 프레임 드롭
frame workload. Impeller generates and compiles all necessary shaders when we build the Flutter Engine. Therefore apps running on Impeller already have all the shaders they need, and the shaders can be used without introducing jank into animations. Skia Impeller What’s Shader Compilation Jank? Section # 69 Flutter's new rendering engine
o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o Impeller Section 04 73 Flutter's new rendering engine o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
better integration with HTML in the latest release. We will also be sharing our progress on compiling Flutter web apps to WebAssembly. Evolving Flutter's support for the web Section 05 76
Web #53041 2. Improve the indexability (SEO) of Flutter apps on the web (#46789) 3. Server-side rendering for Flutter web (#47600) 4. main.dart.js is too large #46589 Flutter for the Web Section 05 77 • Flutter as the first of a new breed of frameworks that target WebGL and Wasm and leave HTML behind. • Flutter for web, as currently designed, is fundamentally a client-side technology. • Dart is compiled to JS (or maybe one day Wasm, we're looking into that in the coming year).
was tree-shaken, reducing it from 283452 to 1272 bytes (99.6% reduction). Tree-shaking can be disabled by providing the --no-tree-shake-icons flag when building your app. Font asset "MaterialIcons-Regular.otf" was tree-shaken, reducing it from 1645184 to 7652 bytes (99.5% reduction). Tree-shaking can be disabled by providing the --no-tree-shake-icons flag when building your app. 81
build exciting new embedded user interfaces. The Raspberry Pi was introduced as a tool to teach computer science, but since its introduction has been a staple in every maker’s toolbox. It’s been used as the basis for maker projects such as IoT devices, game emulators, and kiosks. So this is the answer to "What would a Flutter & Raspberry Pi game console look like?" Flutter, Dart, and Raspberry Pi Section 06 91
text defaults to use ColorScheme ◦ #128581 • Add onSubmitted property to SearchBar ◦ #129365 • [framework] Add textField OCR support for framework side ◦ #96637 Release SDK 3.13 Beta
◦ Class Modifiers • Flutter 3.10 ◦ Material 3 ◦ Shader support web ◦ Impeller available by default on iOS • FlutterFire (Firebase) ◦ New Documents ◦ Update Firebase Crashlytics • Flutter Web 💜 Wasm ◦ Master Channel ◦ Wasm GC ◦ Fragment Shaders Summary