flutter_fit_utils

Last updated:

0 purchases

flutter_fit_utils Image
flutter_fit_utils Images
Add to Cart

Description:

flutter fit utils

A flutter package to easily manage data in and out of repositories.
This package is the core of it's environement. To know about other packages related to flutter_fit_utils, see the diagram below.

Features #
Use this package to:

Get a uniform way of reading and writing data with Models.
Create a repository and a service for your data with a single line of code.
Get access to extensions for multiple flutter base classes.

Here are the supported repositories:

Firebase Firestore
Hive
Firebase Remote Config (Read Only)
shared_preferences
Firebase Storage (soon)

Getting started #

Go inside your pubspec.yaml file
Add this line under the dependencies:

flutter_fit_utils: ^2.0.0
copied to clipboard

Get dependencies

flutter pub get
copied to clipboard
Usage #
Creating a model #
Make a class Modelable so it can be managed by a service and sent to a repository. For example:
import 'package:flutter_fit_utils/flutter_fit_utils.dart';

/// Example user class.
class User extends Modelable {
static const String _nameKey = "name";

/// User's last name.
final String name;

/// Creates a new user.
const User({this.name = "", super.id, super.userId});

/// Creates an invalid user.
const User.invalid() : name = "", super.invalid();

/// Creates a user from a [Model].
User.fromModel(super.model) :
name = model.data[_nameKey].toString(),
super.fromModel();

@override
User copyWith({String? id, String? userId, bool? invalid, String? name}) => User(
name: name ?? this.name,
id: id ?? this.id,
userId: userId ?? this.userId,
);

@override
Model toModel() => Model(
id: id,
userId: userId,
data: {
_nameKey: name,
},
);
}
copied to clipboard
If creating an entire class is too much for your use case, this package offers extensions to convert primitive types to Models:
final int myValue = 1;

/// Write.
final Model model = myValue.toModel();

/// Read.
final int otherValue = intFromModel(model);
copied to clipboard
Here are the supported types:

int
double
num
bool
String
List (Of Modelable objects)
Map<String, dynamic>

Managing your model with a service #
You can create a service for your model with a single line of code:
import 'package:flutter_fit_utils/flutter_fit_utils.dart';

final Service<User> service = FirestoreService("my_user_collection", User.fromModel);
copied to clipboard
This example automatically uses a FirestoreCollection repository. In the case of FirestoreCollection, the only thing you have to do
is go to your Firebase project, and create a new collection "my_user_collection" in your database.
If you want more control over your service, you can also create a custom one:
import 'package:flutter_fit_utils/flutter_fit_utils.dart';

final class CustomUserService extends Service<User> {
CustomUserService(super.repositoryId, super.fromModelFactory) {
repository = FirestoreCollection(collectionId: repositoryId);
}

@override
Future<List<UserData>> getAll({String? userId, Where? where, String? orderBy, bool descending = true}) async {
// Implement your custom logic...
}
}
copied to clipboard
Note that you can override any function of the base Service class.
Additional information #
Feel free to give any feedback ! This package is also open to contributions.

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.