PitchHut
Log in / Sign up
Flamingo
6 views
A robust Flutter library for Firestore data modeling.
Pitch

Flamingo streamlines the process of working with Firebase Firestore in Flutter applications. By providing a clear framework for modeling Firestore documents, it simplifies data handling and enhances developer productivity. Whether you are creating new models or performing data mapping, Flamingo equips you with the tools necessary for efficient coding.

Description

Flamingo is a powerful Flutter library designed to streamline your interactions with Firebase Firestore. With Flamingo, you can effortlessly manage Firestore models and related data, thanks to its intuitive and robust framework. 🐤

Key Features

  • Model Framework: Easily create and manage documents in Firestore with a structured model framework.
  • Annotation-Based Mapping: Use annotations to define fields and map JSON data seamlessly between Firestore and your models. This simplifies the process of saving, updating, and retrieving data.
  • Automatic Code Generation: Leverage flamingo_generator to automatically create mapping code for your models, reducing boilerplate code and potential errors.
  • CRUD Operations: Perform Create, Read, Update, and Delete operations with simple and clear commands. Utilize DocumentAccessor, Batch, or Transaction to handle your data efficiently.
  • Collection Paging: Use CollectionPaging for efficient loading and pagination of documents, making it easy to handle large datasets as you build robust applications.

Usage Example

To get started, simply initialize Flamingo in your main application code:

import 'package:flamingo/flamingo.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Flamingo.initializeApp();
  ...
}

You can then create a model by extending Document and defining your fields using the provided annotations:

yarn import 'package:flamingo/flamingo.dart';
import 'package:flamingo_annotation/flamingo_annotation.dart';

part 'user.flamingo.dart';

class User extends Document<User> {
  User({String? id, DocumentSnapshot<Map<String, dynamic>>? snapshot}) : super(id: id, snapshot: snapshot);

  ()
  String? name;

  
  Map<String, dynamic> toData() => _$toData(this);
  
  void fromData(Map<String, dynamic> data) => _$fromData(this, data);
}

Advanced Features

  • Sub Collections: Manage hierarchical data models effortlessly, making it simple to structure your Firestore collections.
  • File Operations: Easily upload and manage files within Firebase Storage, all while relating them back to your Firestore documents.
  • Increment and Distributed Counters: Support for advanced counting mechanisms with Increment and DistributedCounter for managing concurrent updates safely.

Sample Code

For a complete sample app using Flamingo, check out the example directory in the repository, where you will find various use cases and implementations.

For setup details on integrating with cloud_firestore, please visit the official documentation.

Explore more in the Japanese documentation for users comfortable with the language.

Conclusion

With Flamingo, you have a comprehensive toolkit for building applications that seamlessly interact with Firebase Firestore, simplifying data management and enhancing your Flutter development experience. Elevate your app's capabilities with Flamingo today!