In this tutorial, we’re gonna look at several ways to convert Object to Map & Map to Object in Dart/Flutter.
Related Posts:
– Dart/Flutter – Sort list of Objects
– Dart/Flutter Constructors tutorial with examples
– Dart/Flutter String Methods & Operators tutorial with examples
– Dart/Flutter Future Tutorial with Examples
– Dart/Flutter List Tutorial with Examples
– Dart/Flutter Map Tutorial with Examples
Contents
Overview
Assume that we have a model class like this.
class Customer {
String name;
String email;
int age;
Customer(this.name, this.email, this.age);
@override
String toString() {
return '{ ${this.name}, ${this.email}, ${this.age} }';
}
}
What we’ll do is to convert Customer
object to Map
(<string, dynamic>
) (Flutter/Dart) and vice versa as below.
- key: Customer’s name
- value: Customer’s email, age
// Customer
{ 'BezKoder', '[email protected]', 30 }
// Customer Map<string, dynamic>
{ name: BezKoder, email: [email protected], age: 30 }
Then we work with convert List of Objects to Map
(<string, dynamic>
) and vice versa.
// List of Customers
[{ Jack, [email protected], 23 }, { Adam, [email protected], 27 }, { Katherin, [email protected], 25 }]
// Map { name: {email, age} }
{Jack: {email: [email protected], age: 23}, Adam: {email: [email protected], age: 27}, Katherin: {email: [email protected], age: 25}}
Let’s go to the next sections.
Dart Object to Map
Let’s initialize an Dart Object first.
final customer = Customer('BezKoder', '[email protected]', 30);
We will convert this Customer
object to Map
with name
, email
, age
as keys.
Map<String, dynamic> map = {
'name': customer.name,
'email': customer.email,
'age': customer.age
};
print(map);
Output:
{name: BezKoder, email: [email protected], age: 30}
Dart List of Objects to Map
Before doing our work, we create a List with some items.
List<Customer> list = [];
list.add(Customer('Jack', '[email protected]', 23));
list.add(Customer('Adam', '[email protected]', 27));
list.add(Customer('Katherin', '[email protected]', 25));
Using Map.fromIterable()
We convert List<Customer>
into Map
using fromIterable()
constructor.
var map = Map.fromIterable(list,
key: (e) => e.name, value: (e) => {'email': e.email, 'age': e.age});
print(map);
We pass list
as an Iterable
for the first param.
Then, for each element of the iterable, the method computes key
and value
respectively.
Output:
{Jack: {email: [email protected], age: 23}, Adam: {email: [email protected], age: 27}, Katherin: {email: [email protected], age: 25}}
Using Iterable forEach() method
We can convert Dart List of Objects to Map in another way: forEach()
method.
var map = {};
list.forEach((customer) =>
map[customer.name] = {'email': customer.email, 'age': customer.age});
print(map);
This method is simple to understand.
We iterate over the list, for each item in the list, we add an entry (key,value) to the Map
.
Output:
{Jack: {email: [email protected], age: 23}, Adam: {email: [email protected], age: 27}, Katherin: {email: [email protected], age: 25}}
Dart Map to Object
Let’s initialize a Dart Map first.
Map<String, dynamic> map = {
'name': 'BezKoder',
'email': '[email protected]',
'age': 30
};
We will convert this Map<String, dynamic>
to Customer
object with name
, email
, age
value from Map values. It is ease, we only need to use class constructor method and pass map[key]
as the value.
final customer = Customer(map['name'], map['email'], map['age']);
print(customer);
Dart Map to List of Objects
Let’s initialize a Dart Map first.
Map<String, dynamic> map = {
'Jack': {'email': '[email protected]', 'age': 23},
'Adam': {'email': '[email protected]', 'age': 27},
'Katherin': {'email': '[email protected]', 'age': 25}
};
Before that, initialize an empty list first.
List<Customer> list = [];
Using Map forEach() method
Now we convert our Map to List of Objects above using forEach()
method.
map.forEach((k, v) => list.add(Customer(k, v['email'], v['age'])));
print(list);
In the code above, we create a new Customer
object from each key-value pair, then add the object to the list
.
Output:
[{ Jack, [email protected], 23 }, { Adam, [email protected], 27 }, { Katherin, [email protected], 25 }]
Using Iterable forEach() method
We can also convert a Dart Map to List of Objects using Iterable forEach()
method instead.
We will apply forEach()
to entries
property of the map
.
Every entry has a key-value field, we use them to create a new Customer
object and add to the list
.
map.entries.forEach(
(e) => list.add(Customer(e.key, e.value['email'], e.value['age'])));
print(list);
Output:
[{ Jack, [email protected], 23 }, { Adam, [email protected], 27 }, { Katherin, [email protected], 25 }]
Using Iterable map() method
Another way to convert Map to a Dart List of Objects is to use Iterable map() method.
list = map.entries
.map((e) => Customer(e.key, e.value['email'], e.value['age']))
.toList();
print(list);
Each entry item of Map’s entries
will be mapped to a Customer
object with entry.key
as customer.name
and entry.value
as email
and age
.
Then we convert the Iterable
result to List
using toList()
method.
Output:
[{ Jack, [email protected], 23 }, { Adam, [email protected], 27 }, { Katherin, [email protected], 25 }]
Conclusion
Today we’ve known how to convert an Object to Map in Dart/Flutter, List of Objects to Map and vice versa.
For more details about these methods, also many interesting thing about Dart List and Map, please visit:
– Dart/Flutter List Tutorial with Examples
– Dart/Flutter Map Tutorial with Examples
– Dart/Flutter – Sort list of Objects
Happy Learning! See you again.
Further Reading
– Dart/Flutter Constructors tutorial with examples
– Dart/Flutter String Methods & Operators tutorial with examples
– Dart/Flutter Future Tutorial with Examples