class_to_map 0.0.1 class_to_map: ^0.0.1 copied to clipboard
This package provides two extesions, for converting a class to Map<String, dynamic> and vice versa.
This package provides two extesions, for converting a class to Map<String, dynamic> and vice versa
Usage #
import 'package:class_to_map/class_to_map.dart';
// Simple class
class Test {
String val1 = "value 1";
int val2 = 2;
Map val3 = {"a": "another value"};
}
// Complex class
class Person {
String name = 'person';
int age = 30;
Adress adress = Adress('email@mail.mail', '254700000000');
List<Child> children = [
Child("child 1", 5),
Child("child 2", 1),
];
}
// A class with required positional arguments
class Adress {
Adress(this.email, this.phoneNo);
String phoneNo;
String email;
}
class Child {
Child(this.name, this.age);
String name;
int age;
}
void main() {
Converting a simple class #
// coverting a simple class
print(Test().toMap());
Map<String, dynamic> _testMap = {
"val1": 'value 1',
"val2": 2,
"val3": {"a": "another value"}
};
// converting a map to a simple class
print(_testMap.toClass<Test>().val1);
converting a map to a class with required #
// converting a map to a class with required arguments
Adress _adressTest= {
"phoneNo": '254700000000',
"email": 'email@mail.mail'
}.toClass<Adress>(positionalArguments: ['', '']);
print(_adressTest.email);
converting a complex class to map #
// converting a complex class to map
final Person person = Person();
print(person.toMap());
Map<String, dynamic> personMap = {
"name": 'person',
"age": 30,
"adress": {
"phoneNo": '254700000000',
"email": 'email@mail.mail'
},
"children": [
{"name": 'child 1', "age": 5},
{"name": 'child 2', "age": 1}]
};
// map to class
Person _person = personMap.map((key, value) {
if(key == 'adress'){
return MapEntry(key, (value as Map<String, dynamic>?)?.toClass<Adress>(positionalArguments: ['', '']));
}else if(key == "children"){
List<Child>? _value = (value as List<Map<String, dynamic>>?)?.map((element) => element.toClass<Child>(positionalArguments: ['', 0])).toList();
return MapEntry(key, _value);
} else{
return MapEntry(key, value);
}
}).toClass<Person>();
print(_person.name);
}