What's Flutter and why should I try it?

A presentation at MobiConf in October 2018 in Kraków, Poland by Horacio Gonzalez

Slide 1

Slide 1

What's Flutter and why should I try it? Horacio Gonzalez @LostInBrittany What's Flutter? @LostInBrittany

Slide 2

Slide 2

Horacio Gonzalez Developer Evangelist, OVH GDE in Flutter & Web Spaniard lost in Brittany (France) @ horacio.gonzalez@gmail.com @LostInBrittany LostInBrittany c What's Flutter? @LostInBrittany

Slide 3

Slide 3

OVH Innovation is Freedom What's Flutter? @LostInBrittany

Slide 4

Slide 4

OVH : Key Figures 1.3M Customers worldwide in 138 Countries 4 DC under construction 1.5 Billions of investment over five years + 2 000 Employees 27 Datacenters 18 Years of Innovation 2 DC in project 19 Countries 350k Dedicated Servers 13 Tbps bandwith capacity 200k Private cloud VMs running 33 Points of presence 500k Public cloud Instances created in a month Hosting capacity : 1.3M Physical Servers What's Flutter? @LostInBrittany

Slide 5

Slide 5

OVH: Our solutions Cloud Web Hosting Mobile Hosting Telecom VPS Containers ▪ Dedicated Server Domain names VoIP Public Cloud Compute ▪ Data Storage Email SMS/Fax Private Cloud ▪ Network and Database CDN Virtual desktop Serveur dédié Security Object Storage Web hosting Cloud HubiC Over theBox ▪ Licences Cloud Desktop Securities MS Office Hybrid Cloud Messaging MS solutions What's Flutter? @LostInBrittany

Slide 6

Slide 6

OVH & Poland ● Klaba family comes from Poland ● OVH data center in Warsaw ● OVH office in Wroclaw What's Flutter? @LostInBrittany

Slide 7

Slide 7

What's Flutter? Yet another mobile solution? What's Flutter? @LostInBrittany

Slide 8

Slide 8

Flutter Flutter is Google's new open-source mobile UI toolkit, helping developers to craft high-quality native experiences across mobile platforms in record time c What's Flutter? @LostInBrittany What's Flutter? @LostInBrittany

Slide 9

Slide 9

Flutter Flutter is Google's new open-source mobile UI toolkit, helping developers to craft high-quality native experiences across mobile platforms in record time c What's Flutter? @LostInBrittany What's Flutter? @LostInBrittany

Slide 10

Slide 10

Flutter Flutter is Google's new open-source mobile UI toolkit, helping developers to craft high-quality native experiences across mobile platforms in record time c What's Flutter? @LostInBrittany What's Flutter? @LostInBrittany

Slide 11

Slide 11

Flutter Flutter is Google's new open-source mobile UI toolkit, helping developers to craft high-quality native experiences across mobile platforms in record time c What's Flutter? @LostInBrittany What's Flutter? @LostInBrittany

Slide 12

Slide 12

Flutter Flutter is Google's new open-source mobile UI toolkit, helping developers to craft high-quality native experiences across mobile platforms in record time c What's Flutter? @LostInBrittany What's Flutter? @LostInBrittany

Slide 13

Slide 13

Flutter Flutter is Google's new open-source mobile UI toolkit, helping developers to craft high-quality native experiences across mobile platforms in record time c What's Flutter? @LostInBrittany What's Flutter? @LostInBrittany

Slide 14

Slide 14

Flutter Flutter is Google's new open-source mobile UI toolkit, helping developers to craft high-quality native experiences across mobile platforms in record time c What's Flutter? @LostInBrittany What's Flutter? @LostInBrittany

Slide 15

Slide 15

Flutter Flutter is Google's new open-source mobile UI toolkit, helping developers to craft high-quality native experiences across mobile platforms in record time c What's Flutter? @LostInBrittany What's Flutter? @LostInBrittany

Slide 16

Slide 16

Looking back Diving into the history of mobile app development What's Flutter? @LostInBrittany

Slide 17

Slide 17

At the beginning there were the SDKs Your app Platform Canvas OEM Widgets Events Services Native Code What's Location Bluetooth Audio Sensors Camera etc, Flutter? @LostInBrittany

Slide 18

Slide 18

Then the Webviews... Your app Platform Canvas WebView Events Services Bridge JavaScript What's Location Bluetooth Audio Sensors Camera etc, Flutter? @LostInBrittany

Slide 19

Slide 19

And the Reactive views Your app Platform Canvas JavaScript Bridge OEM Widgets What's Events Services Location Bluetooth Audio Sensors Camera etc, Flutter? @LostInBrittany

Slide 20

Slide 20

Enter Flutter Your app Platform Canvas Widgets, Rendering Events Services Native Code Platform Channels What's Location Bluetooth Audio Sensors Camera etc, Flutter? @LostInBrittany

Slide 21

Slide 21

Flutter architecture What's Flutter? @LostInBrittany

Slide 22

Slide 22

But why Dart? Because Google, duh! …or maybe there are good reasons? What's Flutter? @LostInBrittany

Slide 23

Slide 23

Dart can be compiled AOT or JIT Development builds: Release builds: Custom VM offers super fast hot reload change cycle What's Full AOT-compilation to native machine code offers super fast startup and execution Flutter? @LostInBrittany

Slide 24

Slide 24

Dart's allocation and GC ● Many new objects: ○ Lock-free, fast allocation ● Short-lived objects: ○ Precise, generational garbage collection What's Flutter? @LostInBrittany

Slide 25

Slide 25

Dart is an easy, familiar language An easy language: ● No exotic syntax ● Easy to read, easy to write ● Very expressive A familiar language: ● JavaScript devs find it easy to learn ● Java / C# devs even more What's Flutter? @LostInBrittany

Slide 26

Slide 26

Widgets Why does Flutter use its own widgets, instead of OEM? What's Flutter? @LostInBrittany

Slide 27

Slide 27

Widgets make or break an app ● They need to look good ● They need to feel natural ● They need to be fast ● They need to be extensible and customizable And Flutter widgets are all that! What's Flutter? @LostInBrittany

Slide 28

Slide 28

Widgets are raised into the app Your app Platform Canvas Widgets, Rendering Events Services Native Code Platform Channels What's Location Bluetooth Audio Sensors Camera etc, Flutter? @LostInBrittany

Slide 29

Slide 29

Small tradeoff on app size Your app Widgets, Rendering Having the widgets and rendering in the app have a cost: Minimal app size ~7 MB Native Code Platform Channels What's But the benefices are great Flutter? @LostInBrittany

Slide 30

Slide 30

Layout How Flutter does layout? CSS like? XML like? What's Flutter? @LostInBrittany

Slide 31

Slide 31

Traditional rule based layouts Large set of rules ● Fixed ● Applied to all the widgets Cascading application ● Interactions & conflicts ● Low performance What's Flutter? @LostInBrittany

Slide 32

Slide 32

Chrome team experiment Could a different layout model allow faster rendering? ● Each widget specifies its own simple layout model ● Less rules, heavily optimized ● Complex layouts are turned into widgets What's Flutter? @LostInBrittany

Slide 33

Slide 33

Everything is a widget Layouts Margin Padding Themes are widgets Application even scrolling is a widget! Navigation What's Flutter? @LostInBrittany

Slide 34

Slide 34

Blazing fast and flexible layouts What's Flutter? @LostInBrittany

Slide 35

Slide 35

Show us some code There are developers in the room, you know... What's Flutter? @LostInBrittany

Slide 36

Slide 36

Let's begin with a Hello World... import 'package:flutter/material.dart'; void main() { runApp( new Center( child: new Text( 'Hello, world!', textDirection: TextDirection.ltr, ), ), ); } You will never do that IRL... What's Flutter? @LostInBrittany

Slide 37

Slide 37

Extending Stateless Widget import 'package:flutter/material.dart'; class MyAppBar extends StatelessWidget { @override Widget build(BuildContext context) { return new Center( child: new Text( 'Hello, world!', textDirection: TextDirection.ltr, ), ); } } void main() { runApp(new MyAppBar()); } A widget’s main job is to implement a build function What's Flutter? @LostInBrittany

Slide 38

Slide 38

Complex layouts column body: new Column( children: [ imageSection( path: 'images/lake.jpg', ), titleSection( heading: 'Oeschinen Lake Campground', subtitle: 'Kandersteg, Switzerland', stars: stars, ), buttonSection(), textSection( text: 'Lake Oeschinen lies at the...'), ], ), image titles actions text c What's Flutter? @LostInBrittany What's Flutter? @LostInBrittany

Slide 39

Slide 39

‘UI-as-code’ new Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ new IconAction(icon: Icons.call, label: 'CALL'), new IconAction(icon: Icons.near_me, label: 'ROUTE'), new IconAction(icon: Icons.share, label: 'SHARE'), ]) c What's Flutter? @LostInBrittany What's Flutter? @LostInBrittany

Slide 40

Slide 40

Composability class IconAction extends StatelessWidget { const IconAction({this.icon, this.label, this.onTap}); Widget build(BuildContext context) { return new InkWell( child: new Column( children: [ new Icon(icon, color: primaryColor), new Container( margin: const EdgeInsets.only(top: 8.0), child: new Text( Label style: new TextStyle(color: primaryColor), ), ), ], ), onTap: onTap, ); } } c What's Flutter? @LostInBrittany What's Flutter? @LostInBrittany

Slide 41

Slide 41

Why to choose Flutter? OK, so it's a new technology to build mobile apps, rather cool, yeah… but why should I choose it? What's Flutter? @LostInBrittany

Slide 42

Slide 42

Why choose Flutter? Beautiful Productive Fast Extensible What's Flutter? @LostInBrittany

Slide 43

Slide 43

Beautiful Control every pixel on the screen Make your brand come to life Never say "no" to your designer Stand out in the marketplace Win awards with beautiful UI c What's Flutter? @LostInBrittany What's Flutter? @LostInBrittany

Slide 44

Slide 44

Fast Brings the power of a games engine to user experience development 60fps, GPU accelerated Compiled to native machine code c What's Flutter? @LostInBrittany What's Flutter? @LostInBrittany

Slide 45

Slide 45

Productive Sub-second reload times Paint your app to life Iterate rapidly on features Test hypotheses quicker than ever More time to experiment & test features Single-codebase for faster collab 3X Productivity Gains c What's Flutter? @LostInBrittany What's Flutter? @LostInBrittany

Slide 46

Slide 46

Extensible Everything is free and open source Layered architecture: easy to extend Deep platform integrations Hundreds of third-party packages (ads, videos, database, cloud etc.) c What's Flutter? @LostInBrittany What's Flutter? @LostInBrittany

Slide 47

Slide 47

What's Flutter? @LostInBrittany Confidential + Proprietary

Slide 48

Slide 48

A wonderful time to begin with Flutter Flutter is getting momentum, and the 1.0 is around the corner... What's Flutter? @LostInBrittany

Slide 49

Slide 49

Flutter 1.0 on the starting blocks Latest release: Flutter Release Preview 2 What's Flutter? @LostInBrittany

Slide 50

Slide 50

Getting momentum StackOverflow Question Views What's Flutter? @LostInBrittany

Slide 51

Slide 51

Integration with popular tools 3rd-party Android SDKs Android Studio VS Code Xcode Firebase 3rd-party iOS SDKs Android APIs Material Design iOS APIs What's Flutter? Redux @LostInBrittany

Slide 52

Slide 52

I want to try it! How could you use Flutter today? What's Flutter? @LostInBrittany

Slide 53

Slide 53

Get started now: flutter.io Start a new app from scratch Build your new idea in Flutter, and reach both iOS and Android at the same time. Prototype a new app idea Use Flutter to test out an app concept or idea in record time. What's Bring your app to the the other platform Use Flutter for a part of your app You already have an iOS or Android app? Use Flutter to build for the other platform. Combine codebases when you’ve proven your Flutter app. Test Flutter in production with one or two screens in your existing app. Flutter? @LostInBrittany

Slide 54

Slide 54

Conclusion That's all folks! What's Flutter? @LostInBrittany

Slide 55

Slide 55

Thank you! What's Flutter? @LostInBrittany