enhanced_containers 0.1.0 copy "enhanced_containers: ^0.1.0" to clipboard
enhanced_containers: ^0.1.0 copied to clipboard

A collection of enhanced containers for Dart and Flutter. It is particularly suitable for easy providers linked to database.

Enhanced Containers #

This is a collection of interface for the List and Map containers of Dart and Flutter.

Table of contents #

How to use the enhanced_containers package #

An example is available that shows how the package is intended to be used. In a nutshell, the ListXxx and MapXxx are to be used as normal List and Map. For instance, if one declares a ListProvided, then this ListProvided can be used as a normal List but will take care of the notifyListeners() stuff by itself.

ItemSerializable #

This is the base item of any enhanced_container, i.e. if one wants to use any enhanced_container, the item must be a ItemSerializable.

The requirements to declare a ItemSerializable is to provide the serializeMap() method that returns a dictionary of the item that should all be serialiazable (i.e. base types such int, double, String, etc. or another ItemSerializable).

The List #

ListSerializable #

A ListSerializable is a List where the item can be serialized (i.e. are of types ItemSerializable). This is particularly useful if the List is sent to a database.

The requirements to declare a ListSerializable is to provide a ItemSerializable deserializeItem(data) method which calls (or implements) the reverse process of ItemSerializable.serializeMap(). This method is automatically called when needed.

ListProvider #

A ListProvider is basically a ListSerializable but that calls notifyListeners().

FirebaseListProvided #

As probably suspected, a FirebaseListProvided is a ListProvider that calls the Firebase database and update the key by itself, while also acting as a provider.

The requirements to construct a FirebaseListProvided is to declare a constructor with pahtToData as such: FirebaseListOfMyRandomItem({required super.pathToData});. Optionnally pathToAvailableDataIds can also be specified. By default, the pathToAvailableDataIds is the pathToData with ids appended.

AvailableIds are a way to ensure one does not see the data from another user. For instance, if person1 adds data in the list and person2 adds data as well, all the data are stored in pathToData but only what is marked as available in pathToAvailableDataIds will be shown to person1 and person2 respectively.

The Map #

MapSerializable #

As for the ListSerializable the MapSerializable is basically a Map with ItemSerializable.

The requirements to declare a MapSerializable is to provide a ItemSerializable deserializeItem(data) method which calls (or implements) the reverse process of ItemSerializable.serializeMap(). This method is automatically called when needed.

MapProvided #

A MapProvider is basically a MapSerializable but that calls notifyListeners().

FirebaseMapProvided #

The is not FirebaseMapProvided available yet. If one needs it, they can wrap the MapSerializable in a ListSerializable.

Examples #

An example can be found in the official Git repository https://github.com/cr-crme/enhanced_containers/.

This example can be used as template to construct your own enhanced_containers.

How to contribute #

Enhancing enhancers #

Not all the methods of the List and Map are currently implemented in their respective enhanced version. One can help by implementing those.

More database #

Currently, there is only the Firebase interface database implemented, but there is no reason to only have them. Anyone who wants to help can implement more of them.

Documentation #

Please do not hesitate to correct or modify the documentation as better documentation means better usability!

Cite #

If used, please cite the package as such

@misc{
    MichaudEnhancedContainers2022, 
    author = {Michaud, Benjamin and Stephenne, Laurent}, 
    title = {Enhanced containers for Dart and Flutter}, 
    howpublished={Web page}, 
    url = {https://github.com/cr-crme/enhanced_containers}, 
    year = {2022} 
}
1
likes
140
points
28
downloads

Publisher

unverified uploader

Weekly Downloads

A collection of enhanced containers for Dart and Flutter. It is particularly suitable for easy providers linked to database.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

firebase_database, flutter, nanoid

More

Packages that depend on enhanced_containers