パッケージ、リポジトリ、アプリカテゴリを検索

パッケージ詳細v0.9.8

firedart

Firebase Auth および Firestore SDK のダートネイティブ実装。

AndroidiOSmacOSWindowsLinux
30日間ダウンロード
4260
いいね数
319
Pub ポイント
140

パッケージをインストール

flutter pub add firedart

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

Firedartは、Firebase AuthおよびFirestoreのDartネイティブ実装であり、プラットフォーム固有のSDKに依存せずにFlutterアプリがFirebaseサービスとやり取りできるようにします。認証およびリアルタイムデータ管理のための純粋なDartソリューションを提供し、Android、iOS、macOS、Windows、Linuxでシームレスな統合を実現します。ネイティブ依存関係を回避することで、クロスプラットフォーム開発を簡素化し、アプリサイズを削減します。Firedartは認証フロー、ドキュメントおよびコレクション操作、クエリ、リアルタイムリスナーをサポートしており、オフライン機能と低遅延更新が必要なアプリに最適です。

用途

  • クロスプラットフォームなFirebaseの統合
  • オフライン優先のアプリケーション
  • リアルタイムデータ同期
  • サーバーレスバックエンドの代替案
  • 軽量な Firebase ソリューション

主な機能

  • 純粋な Dart 実装
  • Firebase Auth および Firestore をサポートしています
  • リアルタイムリスナー
  • オフライン永続化
  • プラットフォームに依存しない設計

適している対象

  • ネイティブ依存関係なしのFirebaseアクセスを求める開発者
  • 複数のプラットフォームをターゲットにするアプリ
  • アプリサイズを最小限に抑えることを重視するプロジェクト
  • プロトタイプと軽量アプリ
  • Google Play Services を避けるチーム

注意事項

  • Firebase Auth および Firestore 機能に限定
  • Googleによって公式にサポートされていません
  • 高度なFirebase機能が不足している可能性があります
  • 初期段階の成熟度
  • 組み込みのクラウド関数サポートなし

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

Firedart 🔥🎯

pub package

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: [latest version]

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, await HiveStore.create());
await FirebaseAuth.instance.signIn(email, password);
var user = await FirebaseAuth.instance.getUser();

Alternatively you can instantiate your own FirebaseAuth object:

var firebaseAuth = FirebaseAuth.(apiKey, await PreferencesStore());
await firebaseAuth.signIn(email, password);
var user = await firebaseAuth.getUser();

Further usage examples can be found in the integration tests.

Authentication providers
  • Anonymous
  • Email/Password
  • Custom tokens
  • 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 = await Firestore.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, await HiveStore());
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);

Further usage examples can be found in the integration tests.

Limitations
  • 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, await PreferencesStore(), 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.

カテゴリー

依存関係

依存関係一覧 4 件

ソースリポジトリ

このパッケージを使用しているプロジェクト