Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introductie Google Flutter

Introductie Google Flutter

Avatar for Berry Goudswaard

Berry Goudswaard

July 17, 2019

Other Decks in Programming

Transcript

  1. OVER MIJ Werk Eigenaar The Next App Full stack Developer

    Privé Fotografie Getrouwd en vader van een zoontje van 2,5 [email protected] @berrygoudswaard
  2. OVER THE NEXT APP Web development - PHP - Angular

    - NodeJS App development - Ionic - Xamarin Flutter Eindklanten - Quooker - MSD (Merck) - Het waterschapshuis - Quadrant / King - Gemeente Rotterdam - NVB
  3. WAT IS FLUTTER? Flutter is Google’s portable UI toolkit for

    building beautiful, natively-compiled applications for mobile, web, and desktop from a single codebase.
  4. WAAROM FLUTTER? - Strongly typed (Dart language) - Één codebase

    voor iOS en Android - AOT compilatie (geen runtime) - Consistente, mooi moderne UI (own every pixel) - Goede performance (60 FPS) - Hot Reload
  5. BRIDGE FLUTTER CODE WIDGET RENDERING PLATFORM CHANNELS FRAMEWORK CODE OEM

    WIDGETS SYSTEM SERVICES CANVAS EVENTS SYSTEM SERVICES CANVAS EVENTS Flutter Others
  6. EVERYTHING IS A WIDGET! - Widgets zijn de bouwblokken voor

    de UI - Heel veel verschillende widgets - Kan UI element zijn: Text, Button, TextField - Kan layout element zijn: Padding, Center, Row, Column - Kan een scherm zijn
  7. STATELESS vs STATEFUL - Immutable - Iets wat niet verandert,

    ná initialisatie - Heeft een state die aanpasbaar is - setState() wordt gebruikt om de state te updaten - Flutter zorgt voor efficiënte afhandeling UI update
  8. STATELESS WIDGET class HomePage extends StatelessWidget { @override Widget build(BuildContext

    context) { return Center( child: Text('Hello World!'), ); } }
  9. STATEFUL WIDGET (2/2) class _HomePageState extends State<HomePage> { int _counter

    = 0; @override Widget build(BuildContext context) { return Scaffold( body: Center(child: Text('$_counter')), floatingActionButton: FloatingActionButton( child: Icon(Icons.add), onPressed: () { setState(() { _counter++; }); }, ), ); } }
  10. WIDGET RENDERING (1/5) Widget tree Element tree Render tree Rectangle

    yellow Circle red Element Element RectangleRender yellow Circle Render red
  11. WIDGET RENDERING (2/5) Widget tree Element tree Render tree Rectangle

    blue Circle red Element Element RectangleRender blue Circle Render red
  12. WIDGET RENDERING (3/5) Widget tree Element tree Render tree Rectangle

    yellow Element Element RectangleRender yellow Circle Render red triangle red
  13. WIDGET RENDERING (4/5) Widget tree Element tree Render tree Rectangle

    yellow Element RectangleRender yellow triangle red
  14. WIDGET RENDERING (5/5) Widget tree Element tree Render tree Rectangle

    yellow Element RectangleRender yellow triangle red triangle red Element
  15. Container Column Row Text Image Text Text LIVE CODING Row

    Container Container Column Text Text Column Text Text
  16. LIVE CODING rgb(58, 58, 90) rgb(27, 27, 49) rgb(179, 142,

    255) rgb(123, 60, 255) rgb(255, 130, 203) rgb(255, 50, 170) 45 45 85 50 16 Quicksand size: 18 weight: 500 Quicksand size: 14 weight: 300 Quicksand size: 26 weight: 500 200 Quicksand size: 26 weight: 500 Quicksand size: 16 weight: 500 25
  17. LIVE CODING 25 16 20 25 Quicksand size: 14 weight:

    500 Quicksand size: 18 weight: 500 Quicksand size: 14 weight: 500