firebase 4.2.0+1

  • README.md
  • CHANGELOG.md
  • Installing
  • Versions
  • 98

Firebase APIs for Dart VM (server), Fuchsia, and Browser

Build Status

Use Firebase REST APIs for dart:io apps (for example: server-side Dart or Fuchsia), and a Dart wrapper for Firebase's JavaScript API for the browser.

If you are writing Flutter apps for iOS and Android, you should use FlutterFire plugins instead.

You can find more information on how to use Firebase on the Getting started page.

Don't forget to setup correct rules for your realtime database and/or storage in the Firebase console.

Authentication also has to be enabled in the Firebase console. For more info, see the next section in this document.

Installation

Install the library from pub:

dependencies:
  firebase: '^4.0.0'

Using this package with dart:html

Include Firebase JavaScript source

You must include the original Firebase JavaScript source into your .html file to be able to use the library.

<script src="https://www.gstatic.com/firebasejs/4.4.0/firebase.js"></script>

Example

import 'package:firebase/firebase.dart';

void main() {
  initializeApp(
    apiKey: "YourApiKey",
    authDomain: "YourAuthDomain",
    databaseURL: "YourDatabaseUrl",
    storageBucket: "YourStorageBucket");

  Database database = database();
  DatabaseReference ref = database.ref("messages");

  ref.onValue.listen((e) {
    DataSnapshot datasnapshot = e.snapshot;
    // Do something with datasnapshot
  });
}

Using this package with dart:io

This library also contains a dart:io client.

Create an instance of FirebaseClient and then use the appropriate method (GET, PUT, POST, DELETE or PATCH). More info in the official documentation.

The dart:io client also supports authentication. See the documentation on how to get auth credentials.

import 'package:firebase/firebase_io.dart';

void main() {
  var credential = ... // Retrieve auth credential
  var fbClient = new FirebaseClient(credential); // FirebaseClient.anonymous() is also available
  
  var path = ... // Full path to your database location with .json appended
  
  // GET
  var response = await fbClient.get(path);
  
  // DELETE
  await fbClient.delete(path);
  
  ...
}

Examples

You can find more examples on realtime database, auth and storage in the example folder.

Dart Dev Summit 2016 demo app

Demo app which uses Google login, realtime database and storage.

Before tests and examples are run

You need to ensure a couple of things before tests and examples in this library are run.

All tests and examples

Create config.json file (see config.json.sample) in lib/src/assets folder with configuration for your Firebase project.

To run the io tests, you need to provide the service_account.json file. Go to Settings/Project settings/Service accounts tab in your project's Firebase console, select the Firebase Admin SDK and click on the Generate new private key button, which downloads you a file. Rename the file to service_account.json and put it into the lib/src/assets folder.

Warning: Use the contents of lib/src/assets is only for development and testing this package.

App tests

No special action needed here.

Auth tests and example

Auth tests and some examples need to have Auth providers correctly set. The following providers need to be enabled in Firebase console, Auth/Sign-in method section:

  • E-mail/password
  • Anonymous
  • Phone

Database tests and example

Database tests and example need to have public rules to be able to read and write to database. Update your rules in Firebase console, Database/Rules section to:

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

Warning: At the moment, anybody can read and write to your database. You usually don't want to have this in your production apps. You can find more information on how to setup correct database rules in the official Firebase documentation.

Storage tests and example

Storage tests and example need to have public rules to be able to read and write to storage. Update your rules in Firebase console, Storage/Rules section to:

service firebase.storage {
  match /b/YOUR_STORAGE_BUCKET_URL/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}

Warning: At the moment, anybody can read and write to your storage. You usually don't want to have this in your production apps. You can find more information on how to setup correct storage rules in the official Firebase documentation.

Bugs

If you find a bug, please file an issue.

4.2.0+1

  • Updates to lib/src/ files that are not meant for consumptions outside this package.

4.2.0

  • Improve the generic types in the interop library.
  • Upgraded to Firebase JS API 4.4.0.
  • Added client side localization for email actions, phone authentication SMS messages, OAuth flows and reCAPTCHA verification:
    • Added readable/writable languageCode property to Auth.
    • Added useDeviceLanguage method.
  • Added the ability to pass a continue URL/state when triggering a password reset/email verification which gives a user the ability to go back to the app after completion.
  • Added support for the ability to open these links directly from a mobile app instead of a web flow using Firebase Dynamic Links:
    • sendEmailVerification and sendPasswordResetEmail have optional ActionCodeSettings parameter.
  • Added Persistence state via setPersistence method on Auth class.
  • Updated auth example with the latest features.

4.1.0

  • Upgraded to Firebase JS API 4.2.0.
  • Added toJson to DataSnapshot and Query.
  • Auth:
    • Implemented PhoneAuthProvider and RecaptchaVerifier.
  • User:
    • Added phoneNumber property to the UserInfo.
    • Added linkWithPhoneNumber, updatePhoneNumber and reauthenticateWithPhoneNumber methods.
  • New example demonstrating PhoneAuthProvider functionality in example/auth_phone.
  • Added more tests for V4 API.

4.0.0

  • Upgraded to Firebase JS API 4.1.3.

  • Breaking changes

    • The value in Auth.onAuthStateChanged is now User. AuthEvent has been removed.
  • Removed deprecated APIs:

    • User
      • link method in favor of linkWithCredential.
      • reauthenticate method in favor of reauthenticateWithCredential.
    • AuthCredential
      • provider property in favor of providerId.
  • User: added getIdToken, reauthenticateAndRetrieveDataWithCredential, linkAndRetrieveDataWithCredential, and toJson().

  • Auth: added signInAndRetrieveDataWithCredential and onIdTokenChanged.

3.2.1

  • Update minimum Dart SDK to 1.21.0 – required to use generic method syntax.

3.2.0

  • The FirebaseJsNotLoadedException is thrown when the firebase.js script is not included in the html file.

  • Fix to support dartdevc.

3.1.0

  • Updates from the Firebase 3.8.0 and 3.9.0 in auth library:
    • User
      • Deprecated link method in favor of linkWithCredential.
      • Deprecated reauthenticate method in favor of reauthenticateWithCredential.
      • Added new reauthenticateWithPopup and reauthenticateWithRedirect methods.
    • UserCredential
      • Added new operationType property.
    • AuthCredential
      • Deprecated provider property in favor of providerId.
  • The app.storage() has now an optional storage bucket parameter.

3.0.2

  • Throw FirebaseClientException if there are request failures in firebase_io.dart.
  • Fix provider's addScope and setCustomParameters methods return types.
  • Support the latest release of pkg/func.

3.0.1

  • Updated documentation and tests to reference the latest JS release: 3.7.2

  • Improvements to README.md

3.0.0

  • Completely rewritten for Firebase v3.

0.6.6+3

  • Support crypto 2.0.0.

0.6.6+2

  • Strong-mode clean.

  • Doc fixes.

0.6.6+1

  • Support non-integer values for priority in set operations.

0.6.6

  • Support latest version of pkg/crypto

  • Support latest version of firebase.js - 2.4.2

0.6.5+1

  • Fixed FirebaseClient.post to use POST.

0.6.5

  • Added FirebaseClient.post to firebase_io.dart.

0.6.4

  • Added Firebase.ServerValue.TIMESTAMP constant

0.6.3

  • Added onComplete argument to Firebase.push.

0.6.2

  • Fix an issue calling push with a Map.

  • Fixed the return type of Firebase.onAuth. Also made the returned Stream asynchronous.

0.6.1

  • Added anonymous constructor to FirebaseClient.

  • Added firebase_io.dart library.

    • createFirebaseJwtToken can be used for authentication.
    • The FirebaseClient class is a simple wrapper for the Firebase REST API.
  • Added encodeKey and decodeKey methods to firebase.dart and firebas_io.dart. Convenience methods for dealing with key values with disallowed characters.

0.6.0

  • Removed deprecated name property on Firebase and Snapshot. Use key instead`.

  • Removed deprecated limit method on Firebase. Use limitToFirst and limitToLast instead.

0.5.1

  • Updated startAt() and endAt() methods. They don't take a priority anymore and are meant to be used in conjunction with orderBy*

0.5.0

  • Added authWithOAuthToken()

  • Changed return value of auth methods to return a native dart Map object containing all authData. This is a breaking change.

0.4.0

  • Updated for Firebase api v2.2.2

  • Deprecated name getter on Firebase and DataSnapshot

  • Added key getter on Firebase and DataSnapshot, replacing name

  • Added changeEmail()

  • Added authAnonymously(), authWithOAuthPopup(), authWithOAuthRedirect()

  • Added getAuth() and onAuth() listener

  • Added orderByChild(), orderByKey(), orderByValue(), orderByPriority()

  • Added equalTo(), limitToFirst(), limitToLast()

  • Deprecated limit on Query object

  • Added exists getter to DataSnapshot

  • Added several tests

0.3.0

  • Add createUser(), removeUser() and authWithPassword() (thanks to wilsynet)
  • AuthResponse.auth was changed to type JsObject

0.2.1

  • Added new authWithCustomToken method (thanks to rayk)
  • Deprecate auth

0.2.0+1

  • Updated README to include latest firebase.js link.

0.2.0

  • A number of breaking changes and updates.

  • A number of methods are now properties.

0.1.1+3

  • Fixed up tests.

  • Cleaned up library structure.

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  firebase: "^4.2.0+1"

2. Install it

You can install packages from the command line:

with pub:


$ pub get

Alternatively, your editor might support pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:firebase/firebase.dart';
        
Version Uploaded Documentation Archive
4.2.0+1 Dec 9, 2017 Go to the documentation of firebase 4.2.0+1 Download firebase 4.2.0+1 archive
4.2.0 Dec 9, 2017 Go to the documentation of firebase 4.2.0 Download firebase 4.2.0 archive
4.1.0 Aug 3, 2017 Go to the documentation of firebase 4.1.0 Download firebase 4.1.0 archive
4.0.0 Jul 17, 2017 Go to the documentation of firebase 4.0.0 Download firebase 4.0.0 archive
3.2.0 Jun 12, 2017 Go to the documentation of firebase 3.2.0 Download firebase 3.2.0 archive
3.1.0 Apr 27, 2017 Go to the documentation of firebase 3.1.0 Download firebase 3.1.0 archive
3.0.2 Apr 17, 2017 Go to the documentation of firebase 3.0.2 Download firebase 3.0.2 archive
3.0.1 Mar 19, 2017 Go to the documentation of firebase 3.0.1 Download firebase 3.0.1 archive
3.0.0 Dec 14, 2016 Go to the documentation of firebase 3.0.0 Download firebase 3.0.0 archive
0.6.6+3 Jun 4, 2016 Go to the documentation of firebase 0.6.6+3 Download firebase 0.6.6+3 archive

All 31 versions...

Analysis

This feature is new.
We welcome feedback.

We analyzed this package, and provided a score, details, and suggestions below.

  • completed on Dec 9, 2017
  • Dart: 2.0.0-dev.8.0
  • pana: 0.7.3+1

Scores

Popularity:
Describes how popular the package is relative to other packages. [more]
96
Health:
Code health derived from static analysis. [more]
100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
100
Overall score:
Weighted score of the above. [more]
98

Platforms

Detected platforms: web

All libraries agree

Dependencies

Package Constraint Resolved Available
Direct dependencies
browser ^0.10.0 0.10.0+2
func >=0.1.0 <2.0.0 1.0.0
http ^0.11.3 0.11.3+16
js ^0.6.0 0.6.1
Transitive dependencies
async 2.0.1
charcode 1.1.1
collection 1.14.3
http_parser 3.1.1
source_span 1.4.0
string_scanner 1.0.2
typed_data 1.1.5
Dev dependencies
googleapis_auth ^0.2.3+5
path ^1.3.9 1.5.1
test ^0.12.17