Orientação gerada a partir de informações públicas. Apenas para referência.
Firedart é uma implementação nativa em Dart do Firebase Auth e Firestore, permitindo que aplicativos Flutter interajam com os serviços do Firebase sem depender de SDKs específicos de plataforma. Ele oferece uma solução puramente em Dart para autenticação e gerenciamento de dados em tempo real, proporcionando integração perfeita entre Android, iOS, macOS, Windows e Linux. Ao evitar dependências nativas, simplifica o desenvolvimento multiplataforma e reduz o tamanho do aplicativo. Firedart suporta fluxos de autenticação, operações de documentos e coleções, consultas e ouvintes em tempo real, tornando-se ideal para aplicativos que exigem funcionalidades offline e atualizações com baixa latência.
Casos de uso
Integração do Firebase multiplataforma
Aplicações com foco em offline
Sincronização de dados em tempo real
Alternativas de backend sem servidor
Soluções leves do Firebase
Principais recursos
Implementação pura em Dart
Suporta Firebase Auth e Firestore
ouvintes em tempo real
Persistência offline
Design independente de plataforma
Indicado para
Desenvolvedores que buscam acesso ao Firebase sem dependência nativa
Aplicativos direcionados a múltiplas plataformas
Projetos que priorizam o tamanho mínimo do aplicativo
Protótipos e aplicativos leves
Equipes evitando os Google Play Services
Considerações
Limitado a recursos do Firebase Auth e Firestore
Não é oficialmente suportado pelo Google
Pode carecer de recursos avançados do Firebase
Maturidade em estágio inicial
Sem suporte a funções de nuvem embutidas
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
Firedart 🔥🎯
A dart-native implementation of the Firebase Auth and Firestore SDKs.
This library attempts to minimize dependencies with the intention of making it able to run in any environment capable of executing dart code. Currently it has been successfully tested using the dart runtime (x86-64 and arm32) as well as on Flutter Android, iOS and Desktop.
Firedart currently implements a subset of Firebase Auth and Firestore.
Dependencies
Add Firedart to your pubspec.yaml file:
dependencies:firedart: [latestversion]
Firebase Auth
The FirebaseAuth class implements the necessary functionality for managing accounts. It currently only supports Email/Password sign-in and anonymous sign-in, so make sure these are enabled under Authentication -> Sign-in Method.
You'll also need to go to your Firebase Console, open Project Settings and under the General tab copy the Web API Key.
Note: in order to reduce external dependencies this library doesn't include a mechanism for persisting tokens. Please look at the following examples based on SharedPreferences and Hive.
Usage
import'package:firedart/firedart.dart';
FirebaseAuth has a singleton version which should be enough for most use cases. You'll need to initialise it with your API key and a token store (see note above):
FirebaseAuth.initialize(apiKey, awaitHiveStore.create());
awaitFirebaseAuth.instance.signIn(email, password);
var user = awaitFirebaseAuth.instance.getUser();
Alternatively you can instantiate your own FirebaseAuth object:
var firebaseAuth = FirebaseAuth.(apiKey, awaitPreferencesStore());
await firebaseAuth.signIn(email, password);
var user = await firebaseAuth.getUser();
Google app credentials (i.e. service-account.json)
Firestore
The Firestore class is a basic implementation of the service's RPC interface. The API is similar (but not identical) to that of the official SDK.
Usage
import'package:firedart/firedart.dart';
As with FirebaseAuth, Firestore offers a singleton version that needs to be initialised with your Project ID, which you can find under Project Settings -> General:
Firestore.initialize(projectId);
var map = awaitFirestore.instance.collection("users").get();
var users = UserCollection.fromMap(map);
You can also instantiate your own Firestore object. Please note that if your database requires authenticated access, you'll need to pass along an instance of FirebaseAuth.
var firebaseAuth = FirebaseAuth.(apiKey, awaitHiveStore());
var auth = TokenAuthenticator.from(auth)?.authenticate;
var firestore = Firestore(projectId, authenticator: firebaseAuth);
await firebaseAuth.signIn(email, password);
var map = await firestore.collection("users").get();
var users = UserCollection.fromMap(map);
Collection queries (limit, sort, etc.) are currently not supported.
The data is not cached locally.
Failed writes (e.g. due to network errors) are not retried.
Closed streams are not automatically recovered.
Regenerating the RPC stubs
The Firestore RPC stubs are based on Google's official protobuf definition files from googleapis.
To regenerate them, you will need to check out both googleapis and protobuf.
Set the PROTOBUF and GOOGLEAPIS environment variables to point to your clones of the above repositories respectively, and then run:
$ tool/regenerate.sh
Debugging
For debugging Firebase Auth you can use VerboseClient, an HTTP client that logs all communication to the console. The logs can expose sensitive data including passwords and keys, so it's recommended to only enable it for development builds. In Flutter this can be achieved using the kReleaseMode constant from the foundation package:
var client = !kReleaseMode ? VerboseClient() : http.Client();
var firebaseAuth = FirebaseAuth(apiKey, awaitPreferencesStore(), httpClient: client);
Securing Tokens
If you're running your code in an environment that requires securing access tokens, you can extend TokenStore to persist data in a secure maner, e.g. by encrypting the data or storing it in an external vault. Example implementations can be found in token_store.dart.