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

Flutter, uma alternativa para o desenvolvimento...

Flutter, uma alternativa para o desenvolvimento mobile

Do início até o Flutter. Como é o desenvolvimento mobile e qual é real finalidade do framework

Avatar for Thiago Santos

Thiago Santos

May 25, 2018
Tweet

More Decks by Thiago Santos

Other Decks in Programming

Transcript

  1. Capitão Nativo - O Primeiro Vingador • iOS com Objective-C

    em 2008; • Android com Java em 2009; • O começo da disputa pela jóia do espaço.
  2. WebViews - O Ataque dos Clones • Utiliza Javascript, HTML

    e CSS para desenvolvimento; • Se comunica com o nativo através de uma Bridge (Ponte); • Features dependente da versão do Webview no celular do cliente; • Performance comprometida pela Bridge.
  3. JIT e AOT - A Era de Ultron • Frameworks

    javascript reativos; • Se comunica com o nativo através de uma Bridge (Ponte); • Transpila todo código de uma linguagem para outra; • Se comunica quase diretamente com o nativo; • Performance comprometida em certos momentos pela Bridge.
  4. Mundo Mobile - Guerra Infinita • Nativo com performance, mas

    lento relacionado a produtividade com front-end; • Híbrido com tecnologias Web, mas com performance comprometida; • Nativo com JIT/AOT, mas com Bridge/Runtime que acessam direto o OEM nativo causando problemas de performance; • SDK de Jogos, mas não recomendado para finalidades que não jogos. • Combine tudo, estale os dedos e prepare-se para os bugs.
  5. • SDK que facilita a criação de aplicativos modernos, bonitos

    e de alto desempenho; • Funciona no Android e no iOS; • Possui seu próprio conjunto de Widgets; • Estilo de componentes reativos como React; • Criado e mantido pelo Google; • Open Source. Flutter
  6. Flutter - Arquitetura Skia Dart Text Foundation Animation Painting Rendering

    Widgets Material Gestures Engine (C++) Framework (Dart) Cupertino
  7. Dart - O Império Contra Ataca • É AOT; •

    Também trabalha com JIT; • Torna mais fácil a criação de animações e transições suaves que rodam a 60fps; • Evita utilizar JSX ou XML para criação de layout; • Sintaxe clara e concisa; • É rápida graças a sua estrutura de AOT; • Compila para ARM ou x86 para mobiles e transpila para JavaScript para Web; • É fácil de aprender para quem já conhece C++, C# ou Java; • Dart 2 lançado recentemente com foco em produtividade. https://hackernoon.com/why-flutter-uses-dart-dd635a054ebf
  8. Flutter é para... • Designers - Uma única interface nas

    duas plataformas mobile mais utilizadas; • Prototipação - Protótipos em tempo recorde totalmente funcional; • Desenvolvedores - Dart é fácil e simples de usar, várias IDEs com suporte (Intellij, Android Studio e Visual Studio Code), Widgets altamente personalizáveis, e muito mais...
  9. Comandos • flutter doctor • flutter upgrade • flutter packages

    get • flutter packages upgrade • flutter format • flutter analyze • flutter create projectName • flutter run
  10. Hot Reload • Primeiro build, executar no celular, AOT; •

    App rodando, device conectado, fez alguma modificação, JIT.
  11. Platform Channels • Utilizados para comunicação com a plataforma Android

    ou iOS; • Necessário implementar em cada plataforma; • Funciona como um Broadcast, logo é necessário ter cuidado com o identificador; • Ex: Obter o status da bateria, usar o Bluetooth, entre outros.
  12. Base de um aplicativo import 'package:flutter/material.dart'; void main() => runApp(new

    MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return new MaterialApp( title: 'Flutter Demo', theme: new ThemeData( primarySwatch: Colors.blue, ), home: new MyHomePage(title: 'Flutter Demo Home Page'), ); } }
  13. Base de um aplicativo cont. class MyHomePage extends StatefulWidget {

    MyHomePage({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => new _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { int _counter = 0; void _incrementCounter() { setState(() { _counter++; }); } @override Widget build(BuildContext context) { return new Scaffold( appBar: new AppBar(title: new Text(widget.title),), body: new Center(child: new Text('$_counter',),), floatingActionButton: new FloatingActionButton( onPressed: _incrementCounter, tooltip: 'Increment', child: new Icon(Icons.add), ), ); }
  14. Links • Site Oficial - https://flutter.io • Dart Oficial -

    https://www.dartlang.org/ • Tire suas dúvidas - https://flutter.io/faq • What’s revolutionary about Flutter - https://hackernoon.com/whats-revolutionary-about-flutter-946915b09514 • Why Flutter Uses Dart? - https://hackernoon.com/why-flutter-uses-dart-dd635a054ebf • Flutter o que é isso - https://speakerdeck.com/rafaeltoledo/flutter-o-que-e-isso • What’s New in Flutter Beta 3 - https://medium.com/flutter-io/flutter-beta-3-7d88125245dc • Material Components for Flutter - https://material.io/develop/flutter/