Last updated:
0 purchases
model json
model_json #
This package helps you with managing object models for databases.
Getting started #
Define some object for a database, for example User, extend it from Equatable and mixin Model.
class User extends Equatable with Model {
final String id;
final String name;
final List<String> list;
User({
required this.id,
required this.name,
required this.list,
});
}
copied to clipboard
Due to limitations in Dart, specifically an inability to use types derived from variables as parameters for generics, model_json relies on type_plus. To use model_json, add your classes to type_plus's class definitions like so:
void main() {
. . .
TypePlus.add<User>();
. . .
}
copied to clipboard
Feel free to move this process to a separate function in case you have many classes.
Usage #
Parse from JSON #
Say we send a request GET /user?id= and the response body contains a user object as JSON. Let's parse it:
final client = http.Client;
final uri = Uri.http(
"localhost:5000",
"/user",
queryParameters: {"id": "awd3512gf"},
);
final response = await client.get(uri);
final user = Model.fromJson<User>(response.body);
copied to clipboard
Parse to JSON #
All classes that mixin Model have toJSON method. Say we want to save a user object in the database with a request POST /user?id=&name=&list=
final client = http.Client;
final uri = Uri.http(
"localhost:5000",
"/user",
queryParameters: User.toJson(),
);
final response = await client.post(uri);
copied to clipboard
Comparison of objects #
User extends Equatable, and Model implements props method. So User objects now can be compared by value.
final test1 = User(id: '1', name: 'john doe', list: ['hello', 'world']);
final test2 = User(id: '1', name: 'john doe', list: ['hello', 'world]');
test1 == test2; // true
copied to clipboard
Contributors #
Alexey Tkachenko (@da-the-dev)
Michael Zimin (@N0taName)
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.