fire_api_flutter

fire_api_flutter is the Flutter implementation for fire_api.

It uses cloud_firestore and firebase_storage for the normal shared API surface.

Setup

Initialize after Firebase:

import 'package:fire_api_flutter/fire_api_flutter.dart';

void main() {
  FirebaseFirestoreDatabase.create();
  FirebaseFireStorage.create();
}

Notes

Vector values

VectorValue is translated automatically in both directions, including nested maps and lists.

await FirestoreDatabase.instance.collection("items").doc("one").set({
  "embedding": const VectorValue(vector: [0.1, 0.2, 0.3]),
});

findNearest(...).get() is supported in this adapter.

For normal document/query operations this package still uses cloud_firestore. For vector queries it sends an authenticated Firestore REST StructuredQuery.findNearest request using the current Firebase Auth ID token provider.

final docs = await FirestoreDatabase.instance
    .collection("items")
    .whereEqual("color", "red")
    .findNearest(
      vectorField: "embedding",
      queryVector: const VectorValue(vector: [0.1, 0.2, 0.3]),
      limit: 5,
      distanceMeasure: VectorDistanceMeasure.cosine,
      distanceResultField: "vector_distance",
    )
    .get();

Shared collection deletes

CollectionReference.deleteAll(...) is implemented in the shared fire_api package, so it works here automatically:

await FirestoreDatabase.instance.collection("sessions").deleteAll();

await FirestoreDatabase.instance.collection("sessions").deleteAll(
  only: {"a", "b", "c"},
  batchSize: 50,
);

Libraries

fire_api_flutter