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

Sneak peek at Flutter from iOS developer perspe...

Sneak peek at Flutter from iOS developer perspective

A talk by Bohdan Mihiliev.

MacPaw Tech Talks

September 05, 2019
Tweet

More Decks by MacPaw Tech Talks

Other Decks in Programming

Transcript

  1. 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.
  2. 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.
  3. No pain no gain! • New language dart • Declarative

    UI • Everything is a widget (AnimatedOpacity, Padding, Baseline…)
  4. DART 1. Created by Google 2. Current version is Dart

    2.4.0 3. First appeared on October 10, 2011 https://dart.dev
  5. 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/
  6. FEATURE DART SWIFT Optionals ❤ Tuples ❤ Mixins ❤ Extension

    ❤ Powerful enums ❤ Structs ❤ Futures ❤ Streams ❤
  7. What is the same? Type inference Named parameters Unnamed parameters

    Single inheritance Multiple conformance Error handling Generics
  8. What I don’t like • const, final, • 100500 import…

    • Null safety? • Massive constructions • Pyramid of doom
  9. Positioned( top: position.top, left: position.left, child: Container( width: width, child:

    Card( child: Column( children: filteredSuggestions.map((T suggestion) { return Row(children: <Widget>[ 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), ))))
  10. Future<void> 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); }
  11. Lambda functions & Strings interpolation final List<String> list = <String>['apples',

    'bananas', 'oranges']; list.forEach((String item) => print('$ {list.indexOf(item)}: $item'));
  12. 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);
  13. 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 …
  14. 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
  15. F.A.Q. • Bit code support? • Watch app support? •

    What I’ve got after the build? • Xcode project? Android Project?