dart_firebase_admin

Creator: coderz1093

Last updated:

Add to Cart

Description:

dart firebase admin

Dart Firebase Admin #
Welcome! This project is a port of Node's Firebase Admin SDK to Dart.
⚠️ This project is still in its early stages, and some features may be missing or bugged.
Currently, only Firestore is available, with more to come (auth next).

Dart Firebase Admin
Getting started

Connecting to the SDK

Connecting using the environment
Connecting using a service-account.json file




Firestore

Usage
Supported features


Auth

Usage
Supported features


Available features
Messaging

Usage
Supported features



Getting started #
Connecting to the SDK #
Before using Firebase, we must first authenticate.
There are currently two options:

You can connect using environment variables
Alternatively, you can specify a service-account.json file

Connecting using the environment
To connect using environment variables, you will need to have
the Firebase CLI installed.
Once done, you can run:
firebase login
copied to clipboard
And log-in to the project of your choice.
From there, you can have your Dart program authenticate
using the environment with:
import 'package:dart_firebase_admin/dart_firebase_admin.dart';

void main() {
final admin = FirebaseAdminApp.initializeApp(
'<your project name>',
// This will obtain authentication information from the environment
Credential.fromApplicationDefaultCredentials(),
);

// TODO use the Admin SDK
final firestore = Firestore(admin);
firestore.doc('hello/world').get();
}
copied to clipboard
Connecting using a service-account.json file
Alternatively, you can choose to use a service-account.json file.
This file can be obtained in your firebase console by going to:
https://console.firebase.google.com/u/0/project/<your-project-name>/settings/serviceaccounts/adminsdk
copied to clipboard
Make sure to replace <your-project-name> with the name of your project.
One there, follow the steps and download the file. Place it anywhere you want in your project.
⚠️ Note:
This file should be kept private. Do not commit it on public repositories.
After all of that is done, you can now authenticate in your Dart program using:
import 'package:dart_firebase_admin/dart_firebase_admin.dart';

Future<void> main() async {
final admin = FirebaseAdminApp.initializeApp(
'<your project name>',
// Log-in using the newly downloaded file.
Credential.fromServiceAccount(
File('<path to your service-account.json file>'),
),
);

// TODO use the Admin SDK
final firestore = Firestore(admin);
firestore.doc('hello/world').get();

// Don't forget to close the Admin SDK at the end of your "main"!
await admin.close();
}
copied to clipboard
Firestore #
Usage #
First, make sure to follow the steps on how to authenticate.
You should now have an instance of a FirebaseAdminApp object.
You can now use this object to create a Firestore object as followed:
// Obtained in the previous steps
FirebaseAdminApp admin;
final firestore = Firestore(admin);
copied to clipboard
From this point onwards, using Firestore with the admin ADK
is roughly equivalent to using FlutterFire.
Using this Firestore object, you'll find your usual collection/query/document
objects.
For example you can perform a where query:
// The following lists all users above 18 years old
final collection = firestore.collection('users');
final adults = collection.where('age', WhereFilter.greaterThan, 18);

final adultsSnapshot = await adults.get();

for (final adult in adultsSnapshot.docs) {
print(adult.data()['age']);
}
copied to clipboard
Composite queries are also supported:
// List users with either John or Jack as first name.
firestore
.collection('users')
.whereFilter(
Filter.or([
Filter.where('firstName', WhereFilter.equal, 'John'),
Filter.where('firstName', WhereFilter.equal, 'Jack'),
]),
);
copied to clipboard
Alternatively, you can fetch a specific document too:
// Print the age of the user with ID "123"
final user = await firestore.doc('users/123').get();
print(user.data()?['age']);
copied to clipboard
Supported features #



Firestore





reference.id



reference.parent



reference.path



reference.==



reference.withConverter



collection.listDocuments



collection.add



collection.get



collection.create



collection.delete



collection.set



collection.update



collection.collection



query.where('field', operator, value)



query.where('field.path', operator, value)



query.where(FieldPath('...'), operator, value)



query.whereFilter(Filter.and(a, b))



query.whereFilter(Filter.or(a, b))



query.startAt



query.startAtDocument



query.startAfter



query.startAfterDocument



query.endAt



query.endAtDocument



query.endAfter



query.endAfterDocument



query.select



query.orderBy



query.limit



query.limitToLast



query.offset



querySnapshot.docs



querySnapshot.readTime



documentSnapshots.data



documentSnapshots.readTime/createTime/updateTime



documentSnapshots.id



documentSnapshots.exists



documentSnapshots.data



documentSnapshots.get(fieldPath)



FieldValue.documentId



FieldValue.increment



FieldValue.arrayUnion



FieldValue.arrayRemove



FieldValue.delete



FieldValue.serverTimestamp



collectionGroup



GeoPoint



Timestamp



querySnapshot.docsChange
⚠️


query.onSnapshot



runTransaction



BundleBuilder




Auth #
Usage #
First, make sure to follow the steps on how to authenticate.
You should now have an instance of a FirebaseAdminApp object.
You can now use this object to create a FirebaseAuth object as followed:
// Obtained in the previous steps
FirebaseAdminApp admin;
final auth = FirebaseAuth(admin);
copied to clipboard
You can then use this FirebaseAuth object to perform various
auth operations. For example, you can generate a password reset link:
final link = await auth.generatePasswordResetLink(
'hello@example.com',
);
copied to clipboard
Supported features #
Available features #



Auth





auth.tenantManager



auth.projectConfigManager



auth.generatePasswordResetLink



auth.generateEmailVerificationLink



auth.generateVerifyAndChangeEmailLink



auth.generateSignInWithEmailLink



auth.listProviderConfigs



auth.createProviderConfig



auth.updateProviderConfig



auth.getProviderConfig



auth.deleteProviderConfig



auth.createCustomToken



auth.setCustomUserClaims



auth.verifyIdToken



auth.revokeRefreshTokens



auth.createSessionCookie



auth.verifySessionCookie



auth.importUsers



auth.listUsers



auth.deleteUser



auth.deleteUsers



auth.getUser



auth.getUserByPhoneNumber



auth.getUserByEmail



auth.getUserByProviderUid



auth.getUsers



auth.createUser



auth.updateUser




Messaging #
Usage #
First, make sure to follow the steps on how to authenticate.
You should now have an instance of a FirebaseAdminApp object.
Then, you can create an instance of Messaging as followed:
// Obtained in the previous steps
FirebaseAdminApp admin;
final messaging = Messaging(messaging);
copied to clipboard
You can then use that Messaging object to interact with Firebase Messaging.
For example, if you want to send a notification to a specific device, you can do:
await messaging.send(
TokenMessage(
// The token of the targeted device.
// This token can be obtain by using FlutterFire's firebase_messaging:
// https://pub.dev/documentation/firebase_messaging/latest/firebase_messaging/FirebaseMessaging/getToken.html
token: "<targeted device's token>",
notification: Notification(
// The content of the notification
title: 'Hello',
body: 'World',
),
),
);
copied to clipboard
Supported features #



Messaging





Messaging.send



Messaging.sendEach



Messaging.sendEachForMulticast



Messaging.subscribeToTopic



Messaging.unsubscribeFromTopic



TokenMessage



TopicMessage



ConditionMessage



Messaging.sendAll



Messaging.sendMulticast










Built and maintained by Invertase.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.