Slide 1

Slide 1 text

? ? Should we flutter? Miriam Busch, CTO at Karlmax Berlin @miphoni

Slide 2

Slide 2 text

? ? The quiz

Slide 3

Slide 3 text

#1 Do you actually care about shipping to that other platform? Totally. Nice, but optional. Nope. 40 50 0

Slide 4

Slide 4 text

Redundancy Building the „same“ thing twice?

Slide 5

Slide 5 text

What is a Flutter app? • Your app written in Dart • Bundled with the Flutter system • Compiled to native machine code

Slide 6

Slide 6 text

#2 What is your design approach? Material Brand-specific / custom Native per Platform 20 30 -30 (*) (*) Adjust accordingly.

Slide 7

Slide 7 text

How does Flutter run UI code? • Platform components are not used. • UI is rendered by Flutter’s own rendering engine. • Flutter rendering is fast. • Flutter offers: Material widgets, „Cupertino“ rewrite of iOS UI, customizable basic widgets

Slide 8

Slide 8 text

#3 Does your app need partial screen Google maps or partial screen web views? Yes No -100 0

Slide 9

Slide 9 text

Fallback to fullscreen Android Activities?

Slide 10

Slide 10 text

#4 Is your app heavily relying on platform services? Heavily Little None -50 -10 20

Slide 11

Slide 11 text

Platform-specific code • Call platform-specific code via a message passing interface. • Google and 3rd party plugins: SQLite, BLE, Audio Playback, In-App Billing, Firebase…

Slide 12

Slide 12 text

#5 Do you strive to always provide the best platform integration and adopt new OS features early? Yes No, but would like to. Actually no. -70 … make your call now … 0

Slide 13

Slide 13 text

The latest and greatest of Android? • Dynamic Delivery? • Slices & App Actions • Modularization? ☹ • Customizable Material

Slide 14

Slide 14 text

#6 Are you bored or annoyed by Android because… XML Layout is tedious? Animations are hard? Build times… 30 30 30

Slide 15

Slide 15 text

Back to coding your UI return new Scaffold(appBar: new AppBar( title: new Text(widget.title), ), body: new Center( child: new Column( mainAxisAlignment: MainAxisAlignment.center, children: [ new Text('You have pushed the button this many times:',), new Text(‚$_counter', style: Theme.of(context).textTheme.display1,), ], ), ), floatingActionButton: new FloatingActionButton( onPressed: _incrementCounter, tooltip: 'Increment', child: new Icon(Icons.add), ), );

Slide 16

Slide 16 text

„You never have to say no to your designer any more.“ → Youtube: Fluttery - „The Flutter challenge“ Custom widgets & animations

Slide 17

Slide 17 text

Stateful hot reload

Slide 18

Slide 18 text

#7 Where does your team come from? Java Kotlin 30 -40

Slide 19

Slide 19 text

Dart 2 •Object-oriented •As of Dart2: Strongly typed •Easy to learn •No non-optionals!

Slide 20

Slide 20 text

#8 Do you have time & flexibility to try something new? Yes!!! No. 30 -100

Slide 21

Slide 21 text

Redo from start?

Slide 22

Slide 22 text

„It depends.“ ? ? < -20 … > 20 Android Undecided Try Flutter?!

Slide 23

Slide 23 text

Related at droidcon Berlin’18 • Dylan Drost: Dart: I’m your Flutter (Workshop) • Brian Egan: Build a reactive Flutter app! • Tomek Polanski: I convinced Groupon to Flutter. Do the same with your company. • Matthias Friedrich: Production Flutter’ing • Alternative for sharing business logic: Kotlin Multiplatform • Tobias Heine, Said Tahsin Dane: (Code) Sharing is caring

Slide 24

Slide 24 text

Credits images • The Android droid logo is used under the terms of Creative Commons 3.0 - https://developer.android.com/distribute/marketing-tools/brand- guidelines • Erol Ahmed - https://unsplash.com/@erol • Arisa Chattasa - https://unsplash.com/@golfarisa