O Firebase ajuda a desenvolver, medir, melhorar e expandir seu aplicativo móvel. É apoiado pelo Google e cobre uma ampla gama de serviços, incluindo banco de dados em tempo real, autenticação, monitoramento de falhas, análises, notificações push e muito mais. O Firebase fornece todas essas ferramentas de back-end relacionadas à plataforma como um serviço para que você possa se concentrar mais na criação dos recursos principais do aplicativo.

FlutterFire é um conjunto de plug-ins oficiais que permitem implementar serviços Firebase em seu App Flutter. A versão estável já oferece uma variedade de plug-ins críticos e espera-se que mais sejam disponibilizados em um futuro próximo.

Neste tutorial, demonstraremos como integrar alguns dos plug-ins mais úteis do FlutterFire, incluindo:

Também veremos alguns exemplos práticos para que você possa ver esses plug-ins FlutterFire em ação.

Antes de começar nosso tutorial, vamos analisar como usaremos cada plug-in FlutterFire em nosso aplicativo de exemplo:

Demonstração de plug-ins FlutterFire

Vamos construir um jogo de playground virtual no qual os usuários autenticados por meio do plug-in de autenticação controlam um personagem que pula em um trampolim. A contagem de saltos será sincronizada com o Cloud Firestore. Usaremos o Configuração remota para alterar o plano de fundo sem enviar a atualização do aplicativo. Por fim, lidaremos com eventos e falhas importantes usando os plug-ins Analytics e Crashlytics, respectivamente.

Crie e configure seu projeto Firebase

A primeira etapa é criar um projeto no Firebase console e configurar o aplicativo nativo Android/iOS e Flutter para usar os serviços do Firebase.

Para criar um projeto no Firebase console:

  1. Vá para o Firebase console
  2. Clique em Adicionar projeto
  3. Digite o nome do projeto e clique em Continuar
  4. Mantenha Ativar Google Analytics para este projeto e clique em Continuar
  5. Selecione a conta do Google Analytics e clique em Criar projeto

Configure Google Analytics

Configurando um aplicativo Android

Assim que o projeto for criado, você deverá ser capaz de ver o painel do projeto. Para configurar o projeto Android:

  1. Clique no ícone do Android
  2. Insira o nome do pacote e a chave SHA-1 e clique em Registrar aplicativo na seção Registrar
  3. Baixe o arquivo google-services.json e coloque-o no diretório do aplicativo Android. Ele deve ser semelhante a: android/app/google-services.json
  4. Adicione a dependência do Firebase, conforme descrito na seção Adicionar SDK do Firebase
  5. Clique em Continuar para o console

Configurar aplicativo Android

Configurando um aplicativo iOS

Como o Flutter foi projetado para o desenvolvimento de aplicativos de plataforma cruzada, vamos configurá-lo também para o aplicativo iOS nativo:

  1. No painel do projeto, clique no botão Adicionar aplicativo
  2. Clique no ícone iOS
  3. Insira o ID do pacote e clique em Registrar aplicativo na seção Registrar
  4. Abra o Xcode, faça download do arquivo GoogleService-Info.plist e arraste e solte na subpasta Runner
  5. Siga as instruções conforme descrito nas seções “Adicionar Firebase SDK” e “Adicionar código de inicialização”
  6. Clique em Continuar para o console

Configurar aplicativo iOS

Configurando um projeto Flutter

Para usar qualquer serviço Firebase, o plug-in mais importante que você precisa primeiro instalar é firebase_core , que permite que o aplicativo se comunique com o Firebase.

dependências

: vibração: sdk: flutter cupertino_icons: ^ 1.0.2 firebase_core: ^ 1.0.1

Adicione a dependência firebase_core conforme mostrado acima em o arquivo pubspec.yaml e digite o comando pub get :

 pub vibrante obter

Autenticação

A autenticação é um recurso muito importante para qualquer aplicativo móvel. Os usuários podem fazer upload de informações pessoais e potencialmente confidenciais para seu aplicativo, portanto, poder verificar a identidade do usuário é fundamental.

O Firebase Authentication fornece serviços de back-end e SDKs fáceis de usar para autenticar os usuários do seu aplicativo. Ele oferece suporte à autenticação por meio de senhas, números de telefone e por meio de plataformas de terceiros, como Google, Facebook, Twitter, GitHub e Apple. Usaremos o plug-in firebase_auth para implementar a autenticação em nosso aplicativo.

Habilitando a autenticação no Firebase console

Antes de começarmos a integrar o plug-in firebase_auth em nosso aplicativo, primeiro precisamos habilitar a autenticação no console do Firebase:

  1. Clique em Autenticação no menu à esquerda
  2. Selecione a guia do método Login
  3. Clique em Google , ative o botão Ativar e selecione o e-mail de suporte na lista. Você pode escolher qualquer método de login, exceto para o propósito deste tutorial; selecionamos Google porque vamos implementar o login do Google
  4. Clique em Avançar

Habilitar Auth enticação

Depois de ativar a autenticação, você precisará baixar google-services.json e GoogleService-Info.plist novamente. Você pode encontrar os dois arquivos conforme mostrado abaixo:

Baixar arquivos para autenticação

Adicionando a dependência

Adicione o firebase_auth e google_sign_in dependências no pubspec.yaml , conforme mostrado abaixo:

dependências

: vibração: sdk: flutter cupertino_icons: ^ 1.0.2 firebase_core: ^ 1.0.1 firebase_auth: ^ 1.0.1 #new google_sign_in: ^ 5.0.0 #new

Implementando o código para autenticação

Inicialize os serviços do Firebase no início do aplicativo, assim:

 void main () async { WidgetsFlutterBinding.ensureInitialized (); aguarde Firebase.initializeApp (); runApp (MyApp ()),
}

Adicione o método para fazer login via Google:

 static Future  signInWithGoogle () async { FirebaseAuth _auth=FirebaseAuth.instance; tentar { UserCredential userCredential; if (kIsWeb) { var googleProvider=GoogleAuthProvider (); userCredential=await _auth.signInWithPopup (googleProvider); } senão { final GoogleSignInAccount googleUser=(await GoogleSignIn (). signIn ()) !; final GoogleSignInAuthentication googleAuth= aguarde googleUser.authentication; final googleAuthCredential=GoogleAuthProvider.credential ( accessToken: googleAuth.accessToken, idToken: googleAuth.idToken, ); userCredential=await _auth.signInWithCredential (googleAuthCredential); } usuário final=userCredential.user; usuário de retorno; } catch (e) { imprimir (e); }
}

Também precisamos criar um método de saída:

 static Future  signOut ({contexto BuildContext necessário}) async { final GoogleSignIn googleSignIn=GoogleSignIn (); tentar { if (! kIsWeb) { esperar googleSignIn.signOut (); } esperar FirebaseAuth.instance.signOut (); } catch (e) { imprimir (e); }
}

Como tudo funciona junto:

Cloud Firestore

O Cloud Firestore é um banco de dados de nuvem NoSQL flexível e escalonável que armazena e sincroniza dados em tempo real. O plug-in cloud_firestore oferece ouvintes em tempo real e suporte offline para celular e web. Funciona bem em todas as situações, independentemente da sua conectividade com a Internet. Também é conhecido como banco de dados Firestore.

Criação de um banco de dados no Firebase console
Para criar um banco de dados no Firebase console do nosso projeto:

  1. Clique em Firestore Database ** no menu do lado esquerdo
  2. Clique no botão Criar banco de dados
  3. Apenas para começar, selecione a opção iniciar no modo de teste
  4. Clique em Ativar

Creatin g a Banco de dados no Firestore Console

Configurando regras para acessar o banco de dados

Não queremos deixar o banco de dados aberto, então vamos restringir o acesso ao banco de dados apenas para usuários autenticados, definindo a seguinte regra:

 rules_version=‘2’;
service cloud.firestore { corresponder/bancos de dados/{banco de dados}/documentos { corresponder/{document=**} { permitir leitura, gravação: if request.auth!=null; } }
}

Adicionando a dependência

Adicione a dependência cloude_firestore no pubspec.yaml , conforme mostrado abaixo:

dependências

: vibração: sdk: flutter cupertino_icons: ^ 1.0.2 firebase_core: ^ 1.0.1 firebase_auth: ^ 1.0.1 google_sign_in: ^ 5.0.0 cloud_firestore: ^ 2.2.0 #new

Implementando o código

No aplicativo de demonstração, assim que o usuário estiver conectado, armazenaremos os dados do usuário no Cloud Firestore conforme mostrado abaixo.

 Usuário? usuário=espera Authentication.signInWithGoogle (); if (usuário!=nulo) { database.storeUserData (usuário: usuário); Navigator.of (context).pushReplacement ( MaterialPageRoute ( construtor: (contexto)=> Home ( usuário: usuário, ), ), );
}
//----------------------------------------------------
storeUserData ({usuário de usuário obrigatório}) async { AppUser appUser=AppUser (uid: user.uid, nome: user.displayName, salta: 0); aguardar userCollection .doc (user.uid) .set (appUser.toJson ()) .então ((valor)=> imprimir ("Usuário adicionado")) .catchError ((erro)=> imprimir ("Falha ao adicionar usuário: $ erro"));
}

Armazenaremos e sincronizaremos a contagem de saltos dos usuários conectados no banco de dados Firestore usando o método abaixo:

 ElevatedButton ( style: ElevatedButton.styleFrom (primary: Colors.red), onPressed: () async { _jumpCount ++; _datebase.updateJumpCount ( usuário: _user, jumpCount: _jumpCount); }, filho: Texto ( 'Pular', style: TextStyle (fontSize: 34), ),
),
//---------------
updateJumpCount ({obrigatório usuário do usuário, obrigatório int jumpCount}) async { aguardar userCollection .doc (user.uid) .update ({'jumps': jumpCount}) .então ((valor)=> imprimir ("Usuário adicionado")) .catchError ((erro)=> imprimir ("Falha ao adicionar usuário: $ erro"));
}

Agora vamos adicionar o código para mostrar a contagem de saltos no painel usando ouvintes em tempo real:

 Container ( largura: 200, altura: 100, decoração: BoxDecoration ( color: Colors.grey.withOpacity (0,5), borda: Border.all (largura: 1, cor: Colors.black)), filho: StreamBuilder  ( stream: _usersStream, construtor: (contexto BuildContext, AsyncSnapshot  instantâneo) { if (snapshot.hasError) { return Text ('Algo deu errado'); } if (snapshot.connectionState==ConnectionState.waiting) { retornar Texto ("Carregando"); } retornar expandido ( filho: novo ListView ( filhos: snapshot.data!.docs .map ((documento DocumentSnapshot) { return Text ( '$ {(document.data () as Map) ['name']}: $ {(document.data () as Map) ['jumps']}', estilo: TextStyle (fontSize: 18, color: Colors.black), ); }).listar(), ), ); }, ),
)

FlutterFire Cloud Firestore Pl ugin Exemplo

Como você pode ver acima, a contagem de saltos é atualizada no banco de dados do Firestore e exibida no painel em tempo real.

Configuração remota

O plug-in Configuração remota permite que você altere o comportamento e a aparência de seu aplicativo móvel rapidamente. Isso significa que você pode alterar quase tudo dentro do aplicativo sem publicar a nova atualização do aplicativo.

Inicialmente, o aplicativo irá ler os valores padrão da configuração remota disponível no aplicativo. Posteriormente, ele pode buscar o novo valor da configuração remota quando necessário. Você pode controlar o que precisa ser alterado e as alterações são aplicadas a todos ou a um segmento específico de usuários.

Definição de valores do Remote config no Firebase console

Em nosso aplicativo de demonstração, controlaremos o plano de fundo usando o Configuração remota. Aqui estão as etapas para definir os valores:

  1. No painel do projeto, role para baixo e selecione o Configuração remota
  2. Adicione a chave como plano de fundo e o valor como montanhas para carregar o plano de fundo das montanhas quando o aplicativo for aberto
  3. Clique em publicar alterações duas vezes

Configuração do Remote config no Firebase console

Adicionando a dependência

Adicione a dependência firebase_remote_config no pubspec.yaml , conforme mostrado abaixo:

dependências

: vibração: sdk: flutter cupertino_icons: ^ 1.0.2 firebase_core: ^ 1.0.1 firebase_auth: ^ 1.0.1 google_sign_in: ^ 5.0.0 cloud_firestore: ^ 2.2.0 firebase_remote_config: ^ 0.10.0 + 2 #new

Buscando valores do Configuração remota no código

Agora vamos escrever um código para configurar o Configuração remota no aplicativo. O código a seguir também define os padrões para que o aplicativo possa ler e se comportar na primeira inicialização:

 Future  setupRemoteConfig () async { aguarde Firebase.initializeApp (); final RemoteConfig remoteConfig=RemoteConfig.instance; esperar remoteConfig.setConfigSettings (RemoteConfigSettings ( fetchTimeout: const Duração (segundos: 10), minimumFetchInterval: Duration.zero, )); aguardar remoteConfig .setDefaults ( {'background':'mountains'}); RemoteConfigValue (null, ValueSource.valueStatic); return remoteConfig;
}

Adicione o seguinte código para buscar e carregar o novo valor para o fundo da chave. A IU é refletida de acordo.

 FutureBuilder  ( futuro: _datebase.setupRemoteConfig (), construtor: (contexto BuildContext, AsyncSnapshot  instantâneo) { if (snapshot.hasData) { _fetchLatestRemoteConfig (snapshot.requireData); return Image.asset ( snapshot.requireData.getString ('background')== 'montanhas' ?'assets/images/green_background.png' :'assets/images/beach.png', fit: BoxFit.fill, ); } senão { return Image.asset ( 'assets/images/green_background.png', fit: BoxFit.fill, ); } },
),

Buscando arquivos de configuração remota

Como visto acima, isso muda o fundo das montanhas para a praia e também muda o fundo da imagem no aplicativo na reinicialização.

Crashlytics

Você não pode detectar todos os erros durante o desenvolvimento de aplicativos móveis, que é onde um sistema de monitoramento de falhas entra. O Crashlytics plugin ajuda a detectar erros fatais em tempo real.

Ativação do Crashlytics no Firebase console

No menu à esquerda, clique em Crashlytics e, em seguida, clique no botão Ativar .

FlutterFire Crashlytics Plu gin

Adicionando a dependência

Adicione a dependência firebase_crashlytics no pubspec.yaml , conforme mostrado abaixo:

dependências

: vibração: sdk: flutter cupertino_icons: ^ 1.0.2 firebase_core: ^ 1.0.1 firebase_auth: ^ 1.0.1 google_sign_in: ^ 5.0.0 cloud_firestore: ^ 2.2.0 firebase_remote_config: ^ 0.10.0 + 2 firebase_crashlytics: ^ 2.0.6 #new

Adicionando código para detectar erros

Abaixo está o código para inicializar o Crashlytics e detectar quaisquer erros não detectados:

//Crashlytics
esperar FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled (true);
//Passe todos os erros não detectados para o Crashlytics.
Função originalOnError=FlutterError.onError como Função;
FlutterError.onError=(FlutterErrorDetails errorDetails) async { esperar FirebaseCrashlytics.instance.recordFlutterError (errorDetails); //Encaminha para o manipulador original. originalOnError (errorDetails);
};

Você pode testar a detecção de erros simplesmente escrevendo o código abaixo em qualquer lugar:

//Forçar travamento
FirebaseCrashlytics.instance.crash ();

Seria algo assim em seu Firebase console:

Plugin FlutterFire Crashlytics

Analytics

O plug-in Analytics ajuda a descobrir como os usuários estão realmente usando seu aplicativo e fornece dados que você pode usar para melhorar a experiência do usuário. O plug-in oferece relatórios ilimitados para até 500 eventos distintos.

Já optamos por habilitar análises para nosso aplicativo de demonstração, portanto, iniciaremos a integração em nosso aplicativo.

Adicionando a dependência

Adicione a dependência firebase_anlytics no pubspec.yaml , conforme mostrado abaixo:

dependências

: flutter: sdk: flutter cupertino_icons: ^1.0.2 firebase_core: ^1.0.1 firebase_auth: ^1.0.1 google_sign_in: ^5.0.0 cloud_firestore: ^2.2.0 firebase_remote_config: ^0.10.0+2 firebase_crashlytics: ^2.0.6 firebase_analytics: ^8.1.2 #new

Logging the events

There are a lot of predefined events to log, such as buy, add to cart, login, etc. For our example, let’s try to add a login event:

ElevatedButton( onPressed: () async { User? user=await Authentication.signInWithGoogle(); if (user !=null) { database.storeUserData(user: user); Navigator.of(context).pushReplacement( MaterialPageRoute( builder: (context)=> Home( user: user, ), ), ); await analytics.logLogin(); } }, child: Text('Sign in with Google'),
)

You can also log the custom event like so:

Future _testSetCurrentScreen() async { await analytics.setCurrentScreen( screenName:'Analytics Demo', screenClassOverride:'AnalyticsDemo', );
}

Here’s how you can see the all logged events:

FlutterFire Analytics Plugin

The full source code is available on GitHub.

Conclusão

In this tutorial, we learned how to integrate the FlutterFire plugins Authentication, Cloud Firestore, Remote Config, Crashlytics, and Analytics in a Flutter app. We then built an example app to show how these FlutterFire plugins work together in a practical application. Finally, we demonstrated how to use FlutterFire plugins to test your app for errors and gather data to help you improve the user experience.

The post Add Firebase to your Flutter app with FlutterFire plugins appeared first on LogRocket Blog.