Slide 1

Slide 1 text

Sneak peek at Flutter from the iOS developer’s perspective 1. Disclamer; 2. Why I picked Flutter; 3. Dart vs Swift; 4. Flutter vs ReactNative; 5. My story with the app: from the idea to AppStore & PlayMarket; 6. F.A.Q; 7. Q&A.

Slide 2

Slide 2 text

Disclamer • This is just a sneak peek. We won’t cover Flutter for the web. Or the best practices with Flutter. • All the information you will hear is based on my experience with Flutter. Yours can be different; • Everything that wasn’t created by me (some benchmarks and additional info) has credits and links on the full articles.; • Some stuff worked in my case. Do not get upset if doesn’t work in yours.

Slide 3

Slide 3 text

Why I picked Flutter? I want to try something new

Slide 4

Slide 4 text

No pain no gain! • New language dart • Declarative UI • Everything is a widget (AnimatedOpacity, Padding, Baseline…)

Slide 5

Slide 5 text

Dart VS Swift https://medium.com/coding-with-flutter/dart-vs-swift-a-comparison-6491e945dc17

Slide 6

Slide 6 text

DART 1. Created by Google 2. Current version is Dart 2.4.0 3. First appeared on October 10, 2011 https://dart.dev

Slide 7

Slide 7 text

SWIFT 1. Developed by Apple 2. Stable release 5.0.2 3. First appeared on June 2, 2014; 5 years ago https://docs.swift.org/swift-book/

Slide 8

Slide 8 text

FEATURE DART SWIFT Optionals ❤ Tuples ❤ Mixins ❤ Extension ❤ Powerful enums ❤ Structs ❤ Futures ❤ Streams ❤

Slide 9

Slide 9 text

What is the same? Type inference Named parameters Unnamed parameters Single inheritance Multiple conformance Error handling Generics

Slide 10

Slide 10 text

FEATURE DART SWIFT Memory management GC ARC Concurency Isolates Dispatch queues Compiler JIT, AOT AOT

Slide 11

Slide 11 text

What I don’t like • const, final, • 100500 import… • Null safety? • Massive constructions • Pyramid of doom

Slide 12

Slide 12 text

Toooo massive constructions abstract class TrackedController extends State with SingleTickerProviderStateMixin, RouteAware {

Slide 13

Slide 13 text

Pyramid of doom and ; , ({((){})}),

Slide 14

Slide 14 text

Positioned( top: position.top, left: position.left, child: Container( width: width, child: Card( child: Column( children: filteredSuggestions.map((T suggestion) { return Row(children: [ Expanded( child: InkWell( child: itemBuilder(context, suggestion), onTap: () { setState(() { if (submitOnSuggestionTap) { final String newText = suggestion.toString(); textField.controller.text = newText; focusNode.unfocus(); itemSubmitted(suggestion); if (clearOnSubmit) { clear(); } } else { final String newText = suggestion.toString(); textField.controller.text = newText; textChanged(newText); } }); })) ]); }).toList(growable: false), ))))

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

What I like •No weak, strong, unowned •Abstract classes •Async/await •Lambdas •Class constructs

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

Future createAndSendTask() async { final newCard = GloCard(boardId: boardId, columnId: columnId, name: _taskTitleText); final createdCard = await create(newCard, boardId); final attachment = await upload(boardId: boardId, cardId: createdCard.id, image: _image); createdCard.description = CardDescription(text: ‘[$_descriptionText](${attachment.url}).'); await updateCard(createdCard, widget.boardId); }

Slide 19

Slide 19 text

Lambda functions & Strings interpolation final List list = ['apples', 'bananas', 'oranges']; list.forEach((String item) => print('$ {list.indexOf(item)}: $item'));

Slide 20

Slide 20 text

Class constructors class Person { Person({this.name, this.age, this.height}); final String name; final int age; final double height; } final Person created = Person(name: 'Bohdan', age: 24, height: 195);

Slide 21

Slide 21 text

React Native VS Flutter https://tinyurl.com/y3k98jvn

Slide 22

Slide 22 text

Flutter React Native Language Dart JavaScript Developers Goggle Facebook Initial Release 2017 2015 Native Performance Superior Good Documentation Precise, clear, and up- to-date Up-to-date and imprecise Who uses Alibaba, Reflectly, Tencent … Facebook, Instagram, Walmart, Wix …

Slide 23

Slide 23 text

Under the hood https://tinyurl.com/y57v6spb

Slide 24

Slide 24 text

My story with the app: from the idea to AppStore & PlayMarket

Slide 25

Slide 25 text

App demonstration

Slide 26

Slide 26 text

Apple review

Slide 27

Slide 27 text

Github issue

Slide 28

Slide 28 text

Did I make it?

Slide 29

Slide 29 text

Call with Apple

Slide 30

Slide 30 text

Where to learn • Flutter official cite - https://flutter.dev/ • List of communities - https://flutter.dev/community • Udemy recommendation 1 - https://www.udemy.com/dart-and-flutter-the- complete-developers-guide/ • Udemy recommendation 2 - https://www.udemy.com/learn-flutter-dart-to-build- ios-android-apps/ • List of interesting resources on GitHub - https://github.com/Solido/awesome- flutter • Telegram Chanel UA: https://t.me/artflutter

Slide 31

Slide 31 text

F.A.Q. • Bit code support? • Watch app support? • What I’ve got after the build? • Xcode project? Android Project?

Slide 32

Slide 32 text

@MacPaw Bohdan Mihiliev Q&A