Slide 1

Slide 1 text

Flutter Updates Jhin Lee Full-Stack Developer @Unity

Slide 2

Slide 2 text

Speaker - Jhin Lee ● Full-Stack Developer @Unity ○ Golang, JS/TS, React.js(Next.js), GCP ● Full-Stack Developer @ConsiderBeyond ○ Firebase + Flutter ○ https://www.considerbeyond.com ● LinkedIn: https://www.linkedin.com/in/leehack

Slide 3

Slide 3 text

Changelog ● Nov 2018 Flutter 1 release ○ Android / iOS ● Mar 2021 Flutter 2 release ○ Web support (stable) ○ Desktop support (preview) ○ Sound Null Safety (Dart 2.12) ● Feb 2022 Flutter 2.10 release ○ Windows support (stable) ● May 2022 Flutter 3 release ○ Linux support (stable) ○ MacOS support (stable) ○ Material 3 Theme

Slide 4

Slide 4 text

Current State ● Flutter 3.7.7 (Dart 2.19.4) ● Fully cross-platform ○ Web ■ Maybe WebApp(or PWA) but not WebSite ○ Mobile: iOS, Android ○ Desktop: Linux, Windows, MacOS ● Null-Safety ● Material 3 Theme ● 700,000+ apps are published

Slide 5

Slide 5 text

Flutter Forward ● Impeller rendering engine ○ Next-generation rendering engine ○ 3D graphics ○ Performance improvement: Side-By-Side Demo ○ Now preview on iOS ● Seamless integration (Interoperability) ○ Web: demo ○ Mobile ■ FFIgen is used to generate bindings for C, Objective-C and Swift APIs ■ JNIgen is used to generate bindings for Java and Kotlin APIs ● Dart 3 (alpha) ○ Records and patterns ○ Capability controls to classes: `interface`, `base`, `final`, `sealed` ● WASM, RISC-V support

Slide 6

Slide 6 text

Records and Patterns (Swap) int a = 1; int b = 2; (a, b) = (b, a); // Now a = 2, b = 1 Demo

Slide 7

Slide 7 text

Records and Patterns (Return multiple values) (String firstName, String lastName) getName() { final user = User(firstName: 'Jhin', lastName: 'Lee'); return (user.firstName, user.lastName); } void main(List args) { // return multiple values final (firstName, lastName) = getName(); print('Name: $firstName $lastName'); } Demo

Slide 8

Slide 8 text

Records and Patterns (Destructuring) User getUser() { final user = User(firstName: 'Jhin', lastName: 'Lee'); return user; } void main(List args) { final User(firstName:first, lastName:last) = getUser(); print('$first is a $last.'); } Demo

Slide 9

Slide 9 text

Records and Patterns (Destructuring) final users = [ User(firstName: 'user1', lastName: '1'), User(firstName: 'user2', lastName: '2'), User(firstName: 'user3', lastName: '3'), ]; for(final User(firstName: first, lastName: last) in users) { print('$first is a $last.'); } Demo

Slide 10

Slide 10 text

Resources ● What’s next for Flutter (Flutter Forward) ● What’s new in flutter 3.7 ● Introducing Dart 3 alpha ● Impeller ● What’s new - Flutter website ● Flutter forward - Youtube playlist