Flutter Developer Cross-Platform App Flutter Advanced
40 horasVisão Geral
Flutter Developer Cross-Platform App Flutter Advanced: Vai te ensina as habilidades práticas de programação necessárias para criar aplicativos Flutter básicos e robustos com sucesso. Os participantes começam aprendendo a usar a linguagem de programação Dart, depurar o Flutter, criar widgets personalizados, fazer o layout de uma tela e responder a gestos. Em seguida, os alunos se aprofundam em habilidades mais avançadas, incluindo como implementar design responsivo, widgets de estilo, gerenciar estado, fazer chamadas de API RESTful com HTTP/HTTPS e muito mais.
Objetivo
Após realizar este Flutter Developer Cross-Platform App Flutter Advanced, você será capaz de:
- Escreva um aplicativo multiplataforma que será executado em qualquer um dos 5 bilhões de telefones celulares iOS/Android do mundo, bem como em ambientes de navegador e desktop
- Desenvolver e depurar aplicativos Flutter
- Aproveite a elegância da linguagem de programação Dart em aplicativos Flutter
- Aplicar temas e estilos
- Escreva widgets personalizados
- Responda a gestos como toques, furtos e beliscões
- Controle com precisão o layout dos aplicativos de maneira responsiva
- Manipular a entrada de dados do formulário de usuários
- Crie aplicativos multitelas com navegação, menus e guias
- Use o Flutter para ler e gravar dados de uma API RESTful online
- Encontre e inclua bibliotecas de terceiros
Publico Alvo
- Analista Dev
- Desenvolvedor iOS
- Desenvolvedor Android
- Desenvolvedor Java
- Desenvolvedor Python
- Qualquer pessoal interessada em se tornar um desenvolvedor Cross-Platform App Flutte
Pre-Requisitos
- Experiência em outra linguagem de programação orientada a objetos como Java, C# ou C++.
Informações Gerais
- Carga horaria, 40h
- Se noturno este curso e ministrado de segunda-feira a sexta-feira das 19h às 23h, total de 10 noites,
- Se aos sábado este curso e ministrado das 09h às 18h, total de 5 sábados,
- Se in-company por favor fazer contato para negociar datas e horários
Formato de Entrega deste Curso:
- 100% on-line ao vivo via Microsoft Teams na presença de um instrutor/consultor Flutter/iOS/Android/Desenvolvedor ativo no mercado atuando com diversos projetos e desenrolamento
- Nota. Não e curso gravado, o mesmo acontece em tempo real
LAB
- Lab/IDE para realizar todos as praticas e exercícios em sala de aula, acompanhado na presença do instrutor
Materiais
Português/Inglês + Exercícios + Lab PraticoConteúdo Programatico
Introduction
- Hello Flutter
- What is Flutter?
- Why Flutter?
- The other options
- Native solutions
Dart Language Overview
- What is Dart?
- Expected features – Dart Cheatsheet
- Data types, Arrays/lists
- Classes
- Conditionals and loops
- Unexpected things about Dart
- Type inference
- final and const
- String interpolation with $
- Spread operator
- Map<foo, bar>
- Functions are objects
- Big arrow/Fat arrow
- Named function parameters
- Omitting “new” and “this.”
- Class constructor parameter shorthand
- Private class members
- Mixins
- The cascade operator (..)
- No overloading
- Named constructors
Developing in Flutter
- The Flutter toolchain
- The Flutter SDK
- IDEs
- IDE DevTools
- Emulators
- Keeping the tools up to date
- The Flutter development process
- Scaffolding the app and files
- Running your app
Everything Is Widgets
- UI as code
- Built-in Flutter widgets
- Value widgets
- Layout widgets
- Navigation widgets
- Other widgets
- How to create stateless widgets
- Widgets have keys
- Passing a value into your widget
- Stateless and Stateful widgets
- So which one should I create?
Value Widgets
- The Text widget
- The Icon widget
- The Image widget
- Embedded images
- Network images
- Sizing an image
- Input widgets
- Text fields
- Putting the form widgets together
- Form widget
- FormField widget
- One big Form example
Responding to Gestures
- Meet the button family
- RaisedButton
- FlatButton and IconButton
- FloatingActionButton
- CupertinoButton
- Dismissible
- Custom gestures for your custom widgets
- Reacting to a long press
- Pinching to add a new item
- Swiping left or right
- The gesture arena
Laying Out Your Widgets
- Laying out the whole scene
- MaterialApp widget
- The Scaffold widget
- The AppBar widget
- SafeArea widget
- SnackBar widget
- How Flutter decides on a widget’s size
- The dreaded “unbounded height” error
- Flutter’s layout algorithm
- Putting widgets next to or below others
- Your widgets will never fit!
- What if there’s extra space left over?
- mainAxisAlignment
- crossAxisAlignment
- Expanded widget
- What if there’s not enough space?
- The ListView widget
- Container widget and the box model
- Alignment and positioning within a Container
- So how do you determine the size of a Container?
- Special layout widgets
- Stack widget
- GridView widget
- The Table widget
Navigation and Routing
- Stack navigation
- Navigating forward and back
- Get result after a scene is closed
- Drawer navigation
- The Drawer widget
- Filling the drawer
- Tab Navigation
- TabController
- TabBar and Tabs
- The Dialog widget
- showDialog( ) and AlertDialog
- Responses with a Dialog
- Navigation methods can be combined
Styling Your Widgets
- Thinking in Flutter Styles
- A word about colors
- Styling Text
- TextStyle
- Custom fonts
- Container decorations
- Border
- BorderRadius
- BoxShape
- Stacking widgets
- Positioned widget
- Card widget
- Themes
- Applying theme properties
Managing State
- What is state?
- What goes in a StatefulWidget?
- The most important rule about state!
- Passing statedown
- Lifting state backup
- An example of state management
- When should we use state?
- Advanced state management
- InheritedWidget
- BLoC
- ScopedModel
- Hooks
- Provider
- Redux
Your Flutter App Can Work with Files
- Including libraries in your Flutter app
- Finding a library
- Adding it to pubspec.yaml
- Importing the library
- Using the library
- Futures, async, and await
- Why would it wait?
- await
- async
- Including a file with your app
- Writing a file
- And reading it!
- Using JSON
- Writing your app’s memory to JSON
- Reading JSON into memory
- Shared preferences
- To write preferences
- To read preferences
Making RESTful API Calls with HTTP
- The flavors of API requests
- Making an HTTP GET or DELETE request
- Making an HTTP PUT, POST, or PATCH request
- HTTP responses to widgets
- Brute force – The easy way
- FutureBuilder – The clean way
- Strongly typed classes
- Create a business class
- Write a fromJSON( ) method
- Use fromJSON( ) to hydrate the object
- One big example
- A GET request in Flutter
- A DELETE request in Flutter
- A POST and PUT request in Flutter
Using Firebase with Flutter (time permitting)
- Introducing Firebase
- Cloud Firestore
- Cloud Functions
- Authentication
- Setting up Firebase itself
- Creating a Firebase project
- Creating the database
- Creating an iOS app
- Creating an Android app
- Adding FlutterFire plugins
- Using Firestore
- To get a collection
- To query
- To upsert
- To delete
- Where to go from here