Slide 1

Slide 1 text

Why Flutter excitement me? ENDO Yasuyuki ( @eyasuyuki )

Slide 2

Slide 2 text

About me ENDO Yasuyuki (2019/03~ freelance) https://github.com/eyasuyuki 2009~ Android development 2016~ iOS development 2019/03~ Flutter development 2019/04~ React Native development

Slide 3

Slide 3 text

Websites Flutter Official Website https://flutter.dev/ Dart Official Website https://www.dartlang.org/ Japan Flutter User Group https://flutter‑jp.connpass.com/ Dartlang Users JP ‑ Slack http://dartlang‑users‑jp‑invite.herokuapp.com/

Slide 4

Slide 4 text

Examples ‑ Simple YouTube Player React Native version From Barry Michael Doyle's tutorial. https://github.com/eyasuyuki/SimpleYouTubePlayer Flutter version https://github.com/eyasuyuki/simple‑youtube‑player

Slide 5

Slide 5 text

Why Flutter excitement me? Easy to install Dart2 is simple Very fast hot‑reload Everything is Widget High productivity

Slide 6

Slide 6 text

Easy to install 1. Download and extract Flutter SDK 2. Add flutter/bin to PATH environment 3. Use CLI command flutter doctor 4. Install plugin to Android Studio/Visual Studio Code 5. Run iOS Simulator/Android emulator 6. flutter create -a kotlin -i swift 7. Update to new version flutter upgrade

Slide 7

Slide 7 text

Dart2 is simple https://www.dartlang.org/guides/language

Slide 8

Slide 8 text

Everything is Object https://www.dartlang.org/guides/language/language‑tour#important‑concepts Every object is an instance of class numbers, functions, and null are object All object inherit from Object class

Slide 9

Slide 9 text

Class based object oriented language https://www.dartlang.org/guides/language/language‑tour#classes

Slide 10

Slide 10 text

Strongly typed programming language https://www.dartlang.org/guides/language/sound‑dart Type inference code example main() { var x = 5; print(x); x = 'text'; // compile error }

Slide 11

Slide 11 text

dynamic type code example main() { dynamic x = 5; print(x); x = 'text'; print(x); }

Slide 12

Slide 12 text

this keyword refers current instance (like Java) https://www.dartlang.org/guides/language/language‑tour#constructors code example class Point { num x, y; Point(num x, num y) { this.x = x; this.y = y; } }

Slide 13

Slide 13 text

map, filter, fold and more methods supported by List class https://api.dartlang.org/stable/2.2.0/dart‑core/List‑class.html

Slide 14

Slide 14 text

=== operator was not supported (use identical ) https://api.dartlang.org/stable/2.2.0/dart‑core/identical.html code example class X { final String _value; X(this._value); } main() { var a = X('a'); var b = X('a'); print(identical(a, b)); // false var p = X('b'); var q = p; print(identical(p, q)); // true }

Slide 15

Slide 15 text

https://twitter.com/fran_wernke/status/1115074586415071234

Slide 16

Slide 16 text

== operator is appropriate code example 0 == "0" // false 0 == [] // false "0" == [] // false

Slide 17

Slide 17 text

Very fast hot‑reload Demo

Slide 18

Slide 18 text

Everything is Widget StatelessWidget StatefulWidget No layout.xml or Storyboard Material design MaterialApp , Scaffold Cupertino (iOS‑style) widgets

Slide 19

Slide 19 text

Hight productivity (1/3) Android Studio debugger Show closing labels in Dart cord

Slide 20

Slide 20 text

Hight productivity (2/3) CLI commands flutter doctor flutter create -a kotlin -i swift flutter run Run flutter packages get after editing pubspec.yaml flutter clean dartfmt

Slide 21

Slide 21 text

High productivity (3/3) Asynchronous programming Future async/await Stream BLoC pattern Business Logic Component Lot of packages Firebase, etc.

Slide 22

Slide 22 text

Coming features macOS application development Windows application development Web application development Hummingbird project