Aprofundando em Flutter Desenvolva aplicações Dart com Widgets
Everton Coimbra de AraújoPrefácio
O Dart e o Flutter podem parecer estranhos no começo para alguns iniciantes, principalmente por suas sintaxes. Porém, uma vez que a estranheza inicial se esvai, mesmo conteúdos complexos tornam-se simples. Criar componentes reutilizáveis pode ser tão simples quanto utilizar um componente já existente. Esse fator gera uma sensação de liberdade, que facilita o sentimento entusiástico ao trabalhar com tais tecnologias.
Quanto à obra em questão, a abstração do conhecimento fica mais evidente ao ler os conteúdos apresentados pelo professor Everton. Isso mostra que mesmo conteúdos complexos são simples de serem entendidos, pois o livro traz uma abordagem pragmática e foca realmente no que agrega valor, facilitando a abstração de conteúdos complexos. Além disso, a metodologia utilizada para explicar os conceitos, apresentando códigos incrementados gradativamente e explicando o conteúdo em pequenas partes, faz com que o aprendizado seja tão natural que dificilmente será necessário fazer uma releitura para entender algum conceito.
À medida que os capítulos são explorados, maior a vontade em dar continuidade na leitura e facilmente haverá dedicação e entrega para conhecer o próximo conteúdo. Os primeiros capítulos são introdutórios e fornecem uma base sólida para a sequência dos próximos conteúdos. Ainda no excelente trabalho feito pelo professor Everton, é possível notar o comprometimento dele em abordar conteúdos aprofundados e, ao mesmo tempo, relevantes para o mercado de trabalho.
É fascinante consumir o conteúdo abordado no livro e perceber que criar um componente para dispositivos móveis utilizando Flutter é tão simples a ponto de caber em menos de 30 páginas de conteúdo, explicados e exemplificados por meio de trechos de código e imagens.
Ademais, ao ler o livro, é possível notar a empatia do professor Everton ao abordar os conteúdos, pois parece que estamos em um diálogo com ele. Isso é notável quando são identificados pelo próprio autor momentos que possam gerar incertezas e, na linha seguinte, o eventual ponto de dúvida é esclarecido.
Por fim, ao final do livro o leitor ou leitora terá uma compreensão sobre boas práticas de desenvolvimento, aprenderá uma nova linguagem de programação que está em voga e com muito potencial, também se sentirá capaz de desenvolver aplicações móveis, tanto para Android quanto para iOS, e ainda poderá, com o conteúdo aprendido, criar componentes próprios.
por Leonan Fraga Leonardo
Sobre o livro
Quando conheci o Flutter, depois de ter trabalhado com o Xamarin e Ionic, logo pensei: isso é algo diferente!
O Flutter fez com que eu voltasse a me apaixonar pela programação. Tive vontade de voltar a desenvolver aplicativos, não mais apenas no meio acadêmico, e, ao terminar este livro, já estava com diversos projetos para novos, que logo se concretizarão.
Este livro traz, na prática, o desenvolvimento de aplicações cross-platform com o Flutter, um framework de desenvolvimento de aplicativos para dispositivos móveis, com versões para desenvolvimento web, desktop e PWA. Desenvolver um aplicativo para ser publicado em dispositivos com plataformas diferentes (iOS e Android) é uma tarefa muito simples com o Flutter.
Os aplicativos, nesse apaixonante framework, são criados por meio de widgets, o kernel do Flutter. Em conjunto, temos a linguagem Dart, que possibilitou a criação do Flutter e nos permite utilizar, customizar e criar nossos widgets e aplicativos.
O livro é desenvolvido em 13 capítulos. O primeiro é apenas teórico, mas não menos importante, pois trago nele contextualizações sobre dispositivos móveis e as ferramentas usadas no livro por meio de um resgate histórico de linguagens e ferramentas utilizadas no desenvolvimento de aplicativos. Além disso, é nesse capítulo inicial que aponto a preparação para o ambiente que vamos utilizar.
No capítulo 2, é apresentado o Android Studio, ambiente que utilizaremos para o desenvolvimento do aplicativo proposto no livro, um jogo da forca. Utilizaremos o Android Studio, mas você pode ficar à vontade para utilizar o Visual Studio Code, outro IDE muito utilizado. Neste capítulo, esmiuçaremos o aplicativo criado como base pelo template do Flutter no Android Studio.
A aplicação implementada durante a leitura do livro refere-se, como mencionado, a um famoso jogo, o jogo da forca, ou hangman game. Registraremos palavras que serão utilizadas no jogo, teremos implementações de visões de abertura da aplicação, menus para navegação, entre outras opções disponíveis ao usuário. Utilizaremos recursos de persistência local e trabalharemos com gerência de estado, com setState, BLoC e MobX.
A prática começa no capítulo 3, no qual criaremos uma visão de splash screen e nosso primeiro widget. Aprenderemos também a inserir assets e imagens no nosso projeto.
No capítulo 4, criaremos uma tela com uma mensagem de boas-vindas, que o usuário poderá marcar como lida para que ela não apareça mais na abertura do aplicativo. Essa funcionalidade será trabalhada por meio da persistência de dados ditos pequenos com uma técnica chamada Shared Preferences. Veremos aqui novos componentes, uma prática que será comum em todos os capítulos.
No capítulo 5, já começaremos a dar ao app uma aparência legal criando um menu com opções para navegação entre as visões criadas no app. Usaremos um Drawer, componente comum em aplicações móveis clássicas, faremos várias customizações de componentes e conheceremos novos e importantes widgets.
O capítulo 6 começa a apresentar conhecimentos mais avançados. Customizaremos o Drawer padrão oferecido pelo Flutter e traremos uma animação que será controlada por BLoC, um excelente recurso para gerência de estado, o que evitará o setState().
O uso de rotas, que auxiliará nossa navegação entre as visões de maneira nomeada, será apresentado no capítulo 7. Nele criaremos um formulário para que o usuário possa informar as palavras que devem ser registradas para o uso no jogo. Neste capítulo, não teremos a persistência dessas palavras, mas teremos a validação dos controles toda realizada por meio do BLoC. Conheceremos também a extensão simulando herança múltipla de comportamento pelo uso de Mixin, um recurso interessante em algumas linguagens também trazido pelo Dart. Extensão, em Orientação a Objetos, é a herança aplicada a uma classe que estende comportamentos de outra. Um Mixin é um recurso do Dart, existente também em outras linguagens, que propicia que parte do comportamento de uma classe seja implementado nele, simulando assim uma herança múltipla por extensão, o que não é comum em linguagens Orientadas a Objetos.
A persistência das palavras informadas no capítulo anterior em banco é trabalhada nos capítulos 8 e 9. Neles faremos uso do SQLite, um mecanismo local para a persistência dos dados. Trabalharemos todas as operações do CRUD, registrando, atualizando, removendo e visualizando as palavras registradas. Veremos recursos bem interessantes relacionados à rolagem infinita de dados, com carga paginada da recuperação deles na base de dados, dando subsídio para um consumo de um serviço web, por exemplo. Veremos também a rolagem de um ListView em busca de um item específico do conjunto de dados utilizado e a marcação dele como selecionado para o caso de uma alteração. Tudo isso usando BLoC.
O capítulo 10 e 11, os mais esperados e muito divertidos, tratam do desenvolvimento do jogo da forca. Desenharemos do início a interface com o usuário e discutiremos regras do jogo para uma boa implementação. Traremos animações criadas em Flare e consumidas em apps Flutter. Conheceremos um novo componente e técnica para gestão de estado, o MobX, que trabalharemos integrado com o GetIt, uma implementação de Service Locator. Você certamente gostará deste capítulo.
O capítulo 12 traz observações e recursos para que nossa aplicação possa ficar ainda melhor e mais próxima do entregável de um cliente.
O livro termina no capítulo 13 com uma conclusão sobre o trabalho desenvolvido e um apontamento para estudos futuros.
Certamente, este livro pode ser usado como ferramenta em disciplinas que trabalham o desenvolvimento de dispositivos móveis, quer seja por acadêmicos ou professores. Ele é o resultado das experiências que venho acumulando ao ministrar aulas dessa disciplina. O que trago aqui são os anseios e as dúvidas dos meus alunos, para os quais já aplico esse conteúdo e do qual eles tanto gostam.
É importante que o leitor ou leitora tenha conhecimento de Orientação a Objetos, de alguma linguagem de programação, conhecimentos básicos sobre banco de dados e seria interessante também saber o conceito básico do Flutter, pois este não é um livro introdutório. Contudo, não ter esses conhecimentos não é um fator impeditivo. O repositório com todos os códigos-fontes usados no livro pode ser encontrado em https://github.com/evertonfoz/implementacoes-de-livros/tree/master/flutter.
Os arquivos disponibilizados no GitHub estão de acordo com as versões apontadas no livro. Recomendo que você implemente inicialmente os exemplos nessas versões e, após o sucesso, tente utilizar a versão mais recente, já que é possível que haja essa atualização quando você estiver lendo o livro. A equipe do Flutter é muito dinâmica e sempre está disponibilizando atualizações evolutivas e corretivas. Reforçando, fique atento às atualizações dos plugins e componentes dos projetos, pois essa tecnologia é dinâmica e atualizações estão sempre ocorrendo. Coloco-me sempre à disposição para esses casos via e-mail direto, evertoncoimbra@gmail.com.
Que a leitura deste livro seja para você tão prazerosa quanto foi para mim escrevê-lo. Desfrute sem moderação e espero que ao final você também esteja apaixonado pelo desenvolvimento mobile com Flutter. Sucesso.
Sumário
- 1 Introdução
- 1.1 O que são os widgets?
- 1.2 O que veremos neste livro?
- 1.3 Preparação de nosso ambiente de trabalho
- 2 Ambientando-se com o Flutter
- 2.1 Instalação e configuração do Flutter e do Dart no Android Studio
- 2.2 O App criado pelo template do Android Studio
- 2.3 Vamos aprofundar no código de exemplo
- 2.4 Enfim, o widget do template
- 2.5 Sobre os widgets do exemplo do template
- 2.6 Hot Reload e Flutter Hot Restart
- 3 A Splash Screen na inicialização da aplicação
- 3.1 Inicialização da aplicação
- 3.2 Customização de um widget para uma imagem circular
- 3.3 O widget para a Splash Screen
- 3.4 Adicionando assets ao nosso aplicativo
- 3.5 A Splash Screen em execução
- 3.6 Recursos vistos no capítulo
- 4 Persistência de dados com Shared Preferences
- 4.1 Tela de boas-vindas com Shared Preferences
- 4.2 A execução para exibir as boas-vindas
- 4.3 Interação com o CheckBox e ElevatedButton
- 4.4 Registro e leitura da Shared Preference
- 5 Um menu com opções de acesso e início com animações
- 5.1 Criação de nosso Drawer
- 5.2 O cabeçalho de nosso Drawer
- 5.3 As opções oferecidas ao usuário pelo Drawer
- 5.4 Refatoração para os ListTiles
- 5.5 Customização para os ListTiles internos
- 6 Abrindo o Drawer via código e uma animação com BLoC
- 6.1 Contextualização sobre o problema e a solução proposta
- 6.2 Personalização do Drawer
- 6.3 Abertura, fechamento e estado no Drawer
- 6.4 Animação do logo do app
- 6.5 Atualização de estado com BLoC
- 7 Rotas, transições entre elas e o formulário para palavras
- 7.1 A classe modelo para o formulário
- 7.2 Implementações para uso de BLoC no formulário
- 7.3 Preparação para alterações na palavra
- 7.4 Criação de um TextFormField especializado
- 7.5 A rota para o formulário de registro de palavras
- 7.6 O controle de rotas
- 7.7 O formulário para registro das palavras
- 7.8 Confirmação dos dados informados
- 8 Persistência na inserção, BLoC na recuperação de dados e animação na transição de rotas
- 8.1 O SQLite como base de dados local
- 8.2 A manipulação de dados no SQLite
- 8.3 Utilização do DAO em nossa visão de inserção
- 8.4 A visualização de todas as palavras já registradas no SQLite
- 8.5 BLoC para a recuperação dos dados
- 8.6 A rota para a visualização de palavras registradas
- 8.7 A rolagem infinita dos dados
- 9 Remoção de dados e atualização do ListView com destaque para alterações realizadas
- 9.1 A remoção da palavra do ListView
- 9.2 A remoção da palavra da tabela de dados
- 9.3 A alteração de uma palavra já registrada
- 9.4 Atualização da listagem com palavras inseridas e alteradas pela rota de CRUD
- 9.5 Destaque no ListView para a palavra alterada
- 9.6 Finalizações em nosso CRUD
- 10 Funcionamento e interação do usuário com o jogo e o teclado para as letras
- 10.1 Contextualização do jogo
- 10.2 O esboço de layout para nosso jogo
- 10.3 Layout real do jogo
- 10.4 A implementação para o funcionamento do jogo
- 10.5 A interação do usuário com o jogo
- 10.6 O teclado do jogo com as letras
- 11 Validação da letra escolhida e verificação de vitória e derrota
- 11.1 Verificação da existência da letra
- 11.2 Errou, começa a animação da forca
- 11.3 Fechamentos para concluir o jogo
- 11.4 O jogador ganhou
- 11.5 Reinício após a vitória
- 11.6 O jogador perdeu
- 11.7 Ajuste final para começar o jogo
- 11.8 Correção de bugs que ficaram
- 12 Fechamento para o app
- 12.1 Launch Screen
- 12.2 Ícone e nome para o app no dispositivo
- 12.3 Responsividade
- 13 Os estudos não param por aqui
Dados do produto
- Número de páginas:
- 317
- ISBN:
- 978-85-5519-315-6
- Data publicação:
- 06/2021. Atualizado em 08/2022.