Building Beautiful Cross-platform Apps with Flutter
Andrew Fitz Gibbon
📧asfg@cs.washington.edu
📧asfg@google.com
🐦@fitzface
Programming cycle...
1st run: "I'm thinking of a number between 1 and 100..."
2nd run: Write a Haiku
3rd run: Generate a random number
4th run: See it was generated wrong, fix it, recompile, start again
Programming cycle...
Choose goal
Programming cycle...
Choose goal
Write code
Programming cycle...
Choose goal
Write code
Observe
Evaluate
Programming cycle...
Choose goal
Re-Write code
Observe
Evaluate
Programming cycle...
Choose goal
Write code
Observe
Evaluate
How "real-time" has this been for you?
Artifact of our development environment
Source Code
Compile
Create Binary
Ask JVM to run
Run from top
Artifact of our development environment
Source Code
Compile
Create Binary
Ask JVM to run
Run from top
Artifact of our development environment
Source Code
Compile
Create Binary
Ask JVM to run
Run from top
Strategies to speed up...
What if we changed the environment?
User Interfaces
System.out.println("I'm thinking....");
User Interfaces
System.out.println("I'm thinking....");
n = scanner.nextInt();
User Interfaces
System.out.println("I'm thinking....");
n = scanner.nextInt();
if (n == 42) // ...
User Interfaces
System.out.println("I'm thinking....");
n = scanner.nextInt();
if (n == 42)
System.out.println("That's the answer!");
User Interfaces
while (programming) {
System.out.println("I'm thinking....");
n = scanner.nextInt();
if (n == 42)
System.out.println("That's the answer!");
}
User Interfaces
Introducing....
Introducing....
Guessing Game:
The long-awaited (and
oft-requested) mobile app
Google's UI Toolkit for building cross-platform apps.
Flutter
Flutter tl;dr:
Reactive Pattern
Text
Button
Center
Text
Scaffold
AppBar
Platform SDKs
OS
Runtime
Framework
App
Platform SDKs
OS
Runtime
Framework
App
App
WebView-based SDKs
OS
Runtime
Framework
WebView
JavaScript VM
App
Other runtimes + native SDKs
OS
App (view)
Non-Platform Runtime
App (logic)
Runtime
Framework
Bridge
Custom, Native, Fluid UIs
Framework
(Dart)
Engine
(C++)
Skia
Dart
Text
Material
Cupertino
Widgets
Rendering
Animation
Painting
Gestures
Foundation
Apps are unique
PS: Want to learn more about web and websites? Look into CSE 154.
iOS
Flutter
Cross-platform...
Running GuessingGame the App on Android...
Learn more
https://flutter.dev
@FlutterDev