Last updated:
0 purchases
mapper
Mapper
Simple library to convert maps to objects and objects to maps
import 'package:mapper/mapper.dart';
@Entity(fullMatch: true) // will map all fields
class Simple {
String strProp;
int intProp;
bool boolProp;
double doubleProp;
}
const Map<String, dynamic> simple = const {
"strProp": "val",
"intProp": 13,
"boolProp": true,
"doubleProp": 12.4,
};
main() {
Simple obj = decode<Simple>(simple);
obj.strProp; // val
obj.intProp; // 13
obj.boolProp; // true
obj.doubleProp; 12,4
Map<String, dynamic> simple2 = encode(obj);
simple2['strProp'] == simple['strProp']; // true
simple2['intProp'] == simple['intProp']; // true
simple2['boolProp'] == simple['boolProp']; // true
simple2['doubleProp'] == simple['doubleProp']; // true
}
copied to clipboard
Basic features:
can convert simple types (String, int, boolean, double)
can convert Lists and Maps (only with simple types inside)
can be added external converters
mirror fields are cache after first use to increase speed
add meta to control convertation process
Roadmap:
add ability to convert complex Maps and Lists with included classes
add ability to convert classes with constructors with arguments
Custom converter example:
import 'package:mapper/mapper.dart';
class BoolParser extends Parser {
bool decode(val) {
if (val is int) {
return val == 1;
}
return null;
}
int encode(val) {
if (val is bool) {
return val == true ? 1 : 0;
}
return null;
}
}
@Entity(fullMatch: true)
class Simple {
@Property(name: 'str') // change field name
String strProp;
bool boolProp;
@Property(ignore: true) // ignore this field
int intProp;
}
main() {
addParser('bool', new BoolParser());
Simple obj = new Simple();
obj.strProp = "string";
obj.boolProp = true;
obj.intProp = 3;
Map<String, dynamic> simple = encode(obj);
simple['str'] == 'string'; // true
simple.containsKey('strProp'); // false, key name was changed
simple['boolProp'] == 1; // true
simple.containsKey('intProp'); // false, field was ignored
}
copied to clipboard
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.