Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Cover image for Integrando seu App com Firebase
flutterbrasil profile imageToshi Ossada
Toshi Ossada forflutterbrasil

Posted on

Integrando seu App com Firebase

Fala Devs, tudo bem com vocês?

Hoje vamos falar de como podemos integrar nosso App com o Firebase de maneira muito simples, para isso iremos utilizar o Slidy e o Modular para nós auxiliares a construção de nosso App, faremos um TODO List como exemplo.

Primeiramente vamos criar nosso projeto vale ressaltar que o nome do domínio da nossa aplicação é muito importante para configurar o Firebase, por este motivo prefiro criar o projeto do Flutter através da prompt de comando, para realizar a criação basta executarmos o comando

$ flutter create–-org com.toshi todo_firebase

Dando uma explicação rápida este comando é separado em 5 partes, a primeira é a “palavra”flutter que significa que irei utilizar o CLI do flutter, o segundo argumento é ocreate isso significa que irei criar um projeto na CLI do flutter, em seguida temos nosso primeiro argumento o–-org nesta hora estou dizendo que meu próximo argumento será o nome do meu domínio que é ocom.toshi e por último é o nome do meu projeto otodo_list. Caso tenha criado o projeto pelo Visual Studio Code ou pelo Android Studio ele irá criar com um nome default, para descobrir qual o domínio que ele criou basta ir eandroid>app>build.gradle e lá procure a áreadefaultConfig e no atributoapplicationId estará o domínio da sua aplicação

Agora para configurar nosso Modular, no prompt de comando podemos executar o slidy start

Escolha oflutter_modular

Escolha o mobX

E confirme a instalação

Agora com nosso projeto criado vamos no site dohttps://firebase.google.com/ e clique em Ir para Console (você já deve ter logado com sua conta Google).

O Firebase é uma ferramenta da Google que é paga entretanto ela te oferece uma quantidade grátis de armazenamento que cabe muito bem para nossos apps de estudo, mas mesmo a parte paga é muito barata, o Firebase te oferece vários recursos interessantes como autenticação, push notifications e a que irmos utilizar que é o Cloud Store que é como se fosse um banco de dados noSQL.

Vamos criar nosso projeto

Agora vamos dar um nome bonito para nosso projeto

Next

Selecione a primeira opção

E voilá projeto criado, agora vamos adicionar um aplicativo em nosso projeto do Firebase

Nesta hora precisaremos saber qual o domínio da aplicação, aquele que vimos lá no começo, é só colocar aqui e pode deixar os outros campos em branco e simplesmente registrar o app

Agora precisaremos configurar nosso app com as instruções que são nos dada, faça o download dogoogle-services.json

E precisamos colocar lá na nossa pastaandroid>app

Agora precisamos seguir os próximos passos, nobuild.gradle dentro da pastaandroid precisamos adicionar a dependência dogoogle-services.

Dentro dedependencies adicione a linha

classpath ‘com.google.gms:google-services:4.3.3’

Agora no build.gradle dentro de android>app precisamos fazer outras configurações, no final do arquivo adicione a linha

apply plugin: ‘com.google.gms.google-services’

E dentro de dependencies adicione a linha

implementation ‘com.google.firebase:firebase-analytics:17.2.2’

Nos adiantando, na hora de compilarmos a aplicação ocorrerá um erro demultidex, resolveremos este problema adicionado neste mesmobuild.gradle 2 configurações, dentro dedependencies adicionamos a linha

implementation ‘com.android.support:multidex:1.0.3’

E dentro dedefaultConfig adicionamos a linha

multiDexEnabled true

Agora precisamos adicionar os package para trabalhar com o Firestore, basta executarmos no promptslidy install cloud_firestore, também precisamos adicionar o firebase_core, basta executarmosslidy install firebase_core.

Agora no site do firebase ele ficara aguardando nossa aplicação executar o firebase, basta clicarmos em pular esta etapa

A parte que iremos utilizar é o database, basta acessarmos no menu lateral e depois clicar em criar banco de dados.

Depois selecione o modo de teste e concluir

E este é nosso banco de dados

Agora com tudo configurado vamos colocar a mão no código. Primeiramente vamos criar nosso modelo, ele terá 4 atributos, o título, se ele está checkado ou não, a posição e o identificador. O identificador no Firebase é um atributo do tipo DocumentReference, então nossa classe ficara da seguinte forma.

Agora seguindo o conceito do SOLID (onde cada classe do tem uma responsabilidade) vamos criar nosso repositório que terá a responsabilidade de pegar nossos dados no Firebase. Para isso vamos usar o slidy.slidy generate repository modules/home/repositories/todo e segundo as boas práticas do SOLID vamos também criar uma interface para esse repositório.

No dart uma interface é uma classe abstrata, vamos definir os métodos que iremos utilizar, o de salvar, o de inserir e o de deletar.

Com isso basta implementarmos a interface em nossa classe de repositório, como trabalharemos com o Firebase necessitaremos de uma instancia do Firestore, que seguindo as boas práticas do SOLID iremos receber por injeção de dependência.

Para recuperar o os documentos que estão no firebase basta acessarmos através da instancia do Firestore.

Firestore.collection(‘nome_do_domuento’).orderBy(‘position’).snapshots()

Isso me retornara uma querySnapshot e precisamos converter isso para uma Lista de TodoModel. Para isso utilizaremos o map para acessar os documentos que são um DocumentSnapshot, daí lá no meu todo_model.dart eu terei que criar um método factory que recebe um DocumentSnapshot e retorna um TodoModel, chamarei ele de fromDocument()

Desta maneira conseguimos utilizar desta maneira

Vamos já implementar os outros métodos, o delete() é bem simples, basta recebermos o TodoModel e no reference damos um delete()

No métodosave() ele será responsável por inserir e alterar o registro, para isso verificamos se oreference énull se fornull trata-se de uminsert de não trata de umupdate, o método ficara da seguinte forma

Eu particularmente não gosto de acessar a camada de repositório diretamente da controller, para isso criei uma camada serviceslidy generate service modules/home/services/todo também crio a interface para o serviço.

A responsabilidade da service neste caso será somente em fazer a ponte da controller para a repository.

Nossa Arquitetura ficara da seguinte formacontroller < conversa >service< conversa > repository.

Então vamos receber na Controller uma instancia da service também por injeção.

Com isso já podemos configurar as injeções nahome_module, note que nós binds da service e da repository eu tipifiquei com as interfaces, já nobind da repository eu injeto uma instancia do Firestore .

Agora vamos para nosso home_controller implementar os métodos de buscar os documentos, salvar e deletar. Vamos também criar um observável do tipo ObservableStream> para armazenar os modelos de forma reativa, nossa classe ficara da seguinte forma.

Usado ObservableStream conseguimos utilizar todo poder de um Stream com reatividade sem precisar usar o widget Stream(), basta envolvê-lo em um Observer()

Com isso basta montar minha tela utilizando as actions que eu montei na controller (deixarei no Github a home_page.dart), e teremos o seguinte resultado

Você pode baixar o código fonte deste projeto em
https://github.com/toshiossada/FlutterTodoListFirebase

Image description

Entre em nosso discord para interagir com a comunidade:https://discord.com/invite/flutterbrasil
https://linktr.ee/flutterbrasil

Top comments(0)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

flutter, dart

More fromflutterbrasil

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp