Alura > Cursos de Mobile > Cursos de Flutter > Conteúdos de Flutter > Primeiras aulas do curso Flutter: aplicando persistência de dados

Flutter: aplicando persistência de dados

Entendendo a Persistência interna - Apresentação

Já se perguntou o que acontece com os dados do aplicativo quando nós fechamos ele?

Pois é, nesse curso nós vamos aprender uma técnica maravilhosa: a persistência interna.

Ela é responsável por manter, salvar, armazenar os dados do aplicativo quando nós fechamos ele.

Vamos conferir no nosso projeto para ver o que mudou?

No nosso projeto nós conseguimos ver que não há mais nenhuma tarefa aqui, então nós podemos adicionar uma nova tarefa. Eu vou clicar no nosso floating action button, que está no canto inferior direito, e entrar na nossa tela de formulários.

Vou criar uma nova tarefa chamada "Eu amo Flutter".

E a dificuldade dessa tarefa vai ser "1", afinal de contas é muito fácil amar o Flutter.

Vou no campo de imagem e vou adicionar a imagem do nosso dash, que é o mascote do Flutter. Vou clicar em adicionar, no centro inferior da tela, e automaticamente nossa tarefa apareceu.

Mas não só isso, se eu fechar o nosso aplicativo e abrir ele novamente, vou fazer isso mais uma vez, a atividade ainda vai estar aqui, quer ver?

Olha ele aí. E não só isso, nós vamos aprender também a utilizar vários outros métodos, como o método de criar uma tarefa, ler, alterar e até deletar uma tarefa.

Falando em deletar, vou deletar essa nossa tarefa que acabamos de criar.

Vou clicar no up, nosso botão no lado direito do cartão da tarefa, segurar o clique por um longo tempo, e recarregar a página, clicando no ícone de refresh, que é uma seta em formato circular, no canto superior direito.

E agora nossa tarefa está deletada. Gostou? Então vem comigo que eu te ensino a fazer tudo isso.

Entendendo a Persistência interna - Como manter os dados?

Vamos começar mais uma aula e, dessa vez, eu quero falar com vocês sobre um tema muito legal. É um tema que vai nos ajudar e muito em relação aos nossos projetos daqui para frente.

E esse tema é como manter os nossos dados, ou seja, como salvar os nossos dados em relação ao nosso projeto. Esse tema vai nos ajudar e muito em relação a um problema que nós temos atualmente no nosso aplicativo.

Então para explicar com cuidado sobre esse tema, eu dividi essa aula em duas partes. A primeira é: o que é persistência interna e como a persistência interna pode nos ajudar no nosso problema e a segunda é: quais são as soluções que o Flutter nos dá em relação à persistência interna, como é que nós podemos utilizar persistência interna no Flutter.

Antes de chegar falando sobre a persistência interna, eu quero perguntar para vocês: vocês sabem qual que é o problema que temos atualmente no nosso aplicativo?

Sim, nosso aplicativo tem um problema. As informações não ficam salvas no nosso aplicativo.

Nosso aplicativo tem várias informações, como level, maestria e novas tarefas. Só que, se fecharmos o nosso aplicativo e abrir de novo, você acha que essas informações vão ficar salvas?

Infelizmente elas não estão ficando salvas. Essas informações são perdidas e isso acontece porque elas não são salvas no nosso dispositivo.

"Mas Kako, espera aí, tínhamos feito lá no nosso projeto um inherited widget que salvava as informações, os estados das nossas variáveis para não perdermos essas informações?".

Pois é, só que essas informações salvas no estado com inherited widget, só ficam salvos no nosso projeto. Então se nós fecharmos o nosso projeto, essas informações se perdem, nós perdemos tudo.

Ele reseta, volta para o zero e isso não vai ser legal, porque eventualmente precisamos fechar nosso aplicativo, não é? Se você precisar fechar ele e usar só amanhã, você vai perder tudo. Isso não é legal.

Então como podemos resolver esse problema? Primeiro vamos conferir no nosso smartphone.

Por padrão, nos smartphones atuais, nós temos a habilidade de salvar coisas, salvar fotos, salvar documentos, salvar vídeos, aplicativos, PDFs, diversos tipos de arquivos. Nós conseguimos salvar coisas no nosso dispositivo.

E se fecharmos, desligarmos o nosso dispositivo, essas informações continuam salvas lá. Então nós já temos a habilidade de salvar informações no nosso smartphone, como podemos usar isso ao nosso favor para salvar informações do aplicativo direto no nosso celular? Vamos descobrir?

Então, a definição de persistência interna é justamente o que eu acabei de dizer, é a habilidade de salvar informações no dispositivo. E não só salvar, como também recuperar as informações e mandar de volta para o nosso projeto.

Então imagina, nós temos os nossos níveis, nossas maestrias, nossas tarefas e elas ficam salvas em um arquivo dentro do nosso dispositivo. Caso nós fecharmos o nosso aplicativo, essas informações não vão ser perdidas porque quando abrirmos novamente o nosso aplicativo, ele vai buscar por esses arquivos salvos no dispositivo, ler eles e atualizar as nossas tarefas, que salvamos da última vez.

Então a definição de persistência interna é salvar os dados no dispositivo, para que possamos fechar o nosso projeto e abrir mais tarde se precisarmos. Bacana. E quais são as soluções que nós temos no Flutter hoje em dia para adicionar, usar a persistência interna?

A primeira coisa que temos que fazer quando nós temos dúvida em um tema em relação ao Flutter é olhar documentação. Normalmente, a documentação sempre fala alguma coisa em relação a vários tipos de tema, e quando nós falamos sobre persistência interna, a documentação também fala sobre vários tipos de pacotes de persistência, como SQFLite e o Shared Preferences. Existem outros pacotes também, como Hive, enfim, muitos outros.

E a própria documentação já nos dá alguns tutoriais em relação a como aplicar e quais são os melhores pacotes de persistência a serem usados. Lembrando que pacotes são bibliotecas da comunidade.

Vou conferir rapidamente a nossa documentação, para que possamos ver quais são as soluções que a própria documentação nos indica.

Aqui estamos nós na nossa documentação. Para quem não lembra como acessar a documentação, estamos no site docs.flutter.dev/cookbook/persistence. Nesse caso, estamos na persistência. Eu vou deixar o link disponível na próxima atividade para vocês.

Na documentação, no nosso cookbook, ele já nos dá três opções de persistência, ele fala que nós podemos usar um tal de SQLite para poder criar o nosso banco de dados, mas nós não vamos falar nada sobre isso nesse instante.

Ele também dá a outra alternativa, que é ler e escrever arquivos diretamente no nosso dispositivo, para podermos ficar salvando essas informações e nós podemos também usar um pacote diferente para salvar pequenos dados no nosso dispositivo e acessar depois.

Então já dá para ver que a própria documentação já nos disponibiliza algumas soluções e essas soluções envolvem alguns pacotes.

Mas calma lá, eu acabei de falar pacotes, o são pacotes? É exatamente isso que eu quero explicar para vocês, com carinho e com cuidado, no próximo vídeo.

Entendendo a Persistência interna - Entendendo os pacotes

Chegou a hora que eu tanto esperava. Vocês não fazem ideia, eu queria mostrar para vocês esses pacotes da comunidade desde o primeiro curso, mas não era a hora certa. Agora você já tem uma base boa para poder entender e poder explorar o mar de possibilidades que é acessar os nossos pacotes da comunidade. ‘

Então eu estou aqui agora no site pub.dev e nós vamos explorar esse site, para vocês entenderem e se aventurarem nos pacotes que temos aqui.

No centro da página nós temos uma barra de pesquisa, mas nós não estamos procurando um pacote específico. Nós vamos explorar a página e tentar entender como as coisas funcionam. Se descermos um pouco, encontraremos várias abas: os favoritos do Flutter, que as pessoas usuárias adoram usar; os mais populares, que são pacotes que, nos últimos 60 dias, as pessoas mais baixaram.

Nós temos também os top pacotes, que são novos, mas estão em destaque popular. Então temos muitos tipos de pacote e até pacotes de Dart nós temos também.

Eu não expliquei exatamente para vocês, mas são pacotes são códigos, bibliotecas em Dart e em Flutter que os usuários de Flutter e de Dart podem criar e disponibilizar para qualquer um usar.

E é muito legal, porque qualquer um pode fazer, qualquer um pode disponibilizar, isso é muito massa. Mas eu já quero deixar vocês cientes de que por qualquer um pode adicionar um pacote aqui, não quer dizer que todos os pacotes sejam bons ou tenham uma qualidade média.

Portanto é importante ter um senso crítico em relação aos nossos pacotes. O que eu vou fazer aqui agora é escolher um pacote aleatório e eu vou mostrar para vocês como nós analisamos um pacote.

Nós não vamos usar nenhum desses pacotes que estão aqui, mas nós vamos analisá-los para descobrir se é um pacote bom, se não é um pacote bom, como é que nós lemos os pacotes, como usamos e etc.

No meu caso, nesse instante, nós temos vários pacotes como favoritos. Eu vou acessar aqui o "Provider", que é um pacote de gerenciamento de estado. Não precisam se preocupar com o que que ele vai fazer, o que eu quero que você se preocupem é entender como analisar um pacote.

Quando entramos no site de um pacote, nós temos, em cima, o nome dele com a versão atual, e logo abaixo nós temos a última publicação desse pacote. No caso desse pacote, foi publicado uma atualização dele há três meses, isso é bem recente.

Mais embaixo temos as plataformas em que esse pacote está disponível, então ele funciona tanto no Android quanto no iOS, desktops e na web também. Bacana. À direita nós conseguimos ver quantas curtidas esse pacote tem, isso é muito importante para vermos se o pacote é popular.

Então aqui conseguimos ver que esse pacote tem mais de 7 mil likes, isso é muito. Além de que, mais à direita dos likes, nós conseguimos ver que tem 140 pub points. Esses pub points são os pontos de publicação que o pessoal do pub dev dá.

Então o máximo de pontos que um pacote pode ter é 140, quanto mais perto de 140, melhor o pacote. No caso desse pacote, ele tem todos os pontos possíveis, então é ótimo pacote.

Por fim, a popularidade desse pacote em relação a outros pacotes que fazem a mesma coisa. No caso desse pacote, ele tem 100% de popularidade. Então ele é muito preferível em relação ao que ele está propondo, no caso desse Provider aqui.

Legal, então nós já conseguimos ter uma ideia de que esse pacote que nós escolhemos é muito bom e devs gostam muito de usá-lo.

Descendo a página do nosso pacote, conseguimos ver que temos um menu com várias opções, como um "Readme", que é a documentação do pacote, onde somos informados como esse pacote funciona, uma introdução ao pacote.

Nela vemos um selo informando que esse pacote é um favorito dos devs do Flutter. No canto superior direito da página desse pacote conseguimos ver de novo esse selo "Flutter Favorite". Isso significa que os devs do Flutter já favoritaram esse pacote, e que ele é muito confiável, vocês podem usar.

É legal se atentarem a isso, porque são tantos pacotes que é bom saber qual é o melhor.

Então descendo um pouco mais nesse readme, ele explica como o pacote funciona em uma introdução. É bom vocês lerem o readme de um pacote antes de começarem a usá-lo. Ele fala muitas coisas do pacote, mas lembrando que é muita informação, e não estamos aqui para analisar e estudar esse pacote especificamente.

Então eu vou rolar rapidamente pelo readme para vocês notarem quanta coisa tem aqui, mas é bem legal vocês conferirem com calma. Caso usem esse ou qualquer pacote, vocês têm que ler o readme.

Vou voltar para parte de cima da página e conferir as outras abas desse nosso menu. Temos o "Changelog", que são as diferenças dos updates desse pacote, então diferença entre os 6.0.2 para o 6.0.3.

Isso é legal para vocês verem o que mudou no pacote nos últimos tempos. Temos também a aba "Exemple" (Exemplo), que eu adoro, e é muito didático para entenderem, na prática, como um pacote funciona. Ele já cria aqui um documento prático que funciona com o pacote.

Isso é muito bom para entendermos como o pacote está funcionando. Temos também a aba de "Installing", que é explicando como instalar o nosso pacote, geralmente muito simples. Também a aba de versões ("Versions"), com as versões disponíveis, quais delas tem null safety, quais não têm, quais delas são mais acessadas, quais não são. Bem bacana.

E por fim a aba de "Scores", que é a aba onde vocês notarão se esse pacote é bom mesmo, onde verificamos os likes, os pontos, a popularidade. Então é muito legal explorar os pacotes, mas não é só isso que podemos fazer aqui no Pub Dev.

Existem pacotes que podem ajudar no nosso problema. No nosso caso, nós estamos procurando um pacotes que falam sobre persistência.

Então voltaremos à página inicial e escreveremos persistence na barra de busca, que é persistência em inglês. Ele vai disponibilizar para nós vários pacotes que falam sobre persistência. O ideal mesmo é analisarmos a documentação, que fala sobre muitas coisas e já pode nos direcionar para alguns pacotes.

Porém, existem muitos temas no Flutter. Por exemplo, vamos supor que você está fazendo um projeto sobre áudio, que você precisa de sons no seu aplicativo e não existe nada na documentação sobre isso.

Você pode ir na barra de busca e pesquisar "audio". Nos resultados aparecerão vários pacotes sobre áudio, tanto pacotes de Dart, quanto pacotes de Flutter, e você pode buscar vários tipos de pacotes que já facilitam adicionar o áudio ao seu projeto. Isso te abre possibilidades quase infinita.

Porque é a comunidade que cria isso aqui, é a comunidade que propõe isso, e você pode propor também para comunidade vários pacotes. Isso é muito legal.

Então você pode analisar qual o pacote você quer usar, qual está mais fácil para o seu projeto, adicioná-lo ao seu projeto e terá áudio ou persistência no seu projeto. Muito bacana.

Eu estava muito animado para mostrar isso para vocês. Espero que vocês estejam gostando e agora nós precisamos entender qual pacote nós vamos usar de persistência, para aplicar no nosso projeto. Vamos lá.

Sobre o curso Flutter: aplicando persistência de dados

O curso Flutter: aplicando persistência de dados possui 155 minutos de vídeos, em um total de 51 atividades. Gostou? Conheça nossos outros cursos de Flutter em Mobile, ou leia nossos artigos de Mobile.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Flutter acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas