Maps in Dart
On this page
To demonstrate the usage of maps, which are Dart’s built-in associative data types, we’ll create a translation of the provided code and explanation. Maps in Dart are equivalent to dictionaries in other languages.
void main() {
// Creating an empty map
var m = <String, int>{};
// Setting key/value pairs
m['k1'] = 7;
m['k2'] = 13;
// Printing a map will show all its key/value pairs
print('map: $m');
// Getting a value for a key
var v1 = m['k1'];
print('v1: $v1');
// If the key doesn't exist, it returns null
var v3 = m['k3'];
print('v3: $v3');
// The number of key/value pairs in the map
print('len: ${m.length}');
// Removing key/value pairs from a map
m.remove('k2');
print('map: $m');
// Removing all key/value pairs from a map
m.clear();
print('map: $m');
// Checking if a key is present in the map
var prs = m.containsKey('k2');
print('prs: $prs');
// Declare and initialize a new map in the same line
var n = {'foo': 1, 'bar': 2};
print('map: $n');
// Check if two maps are equal
var n2 = {'foo': 1, 'bar': 2};
if (MapEquality().equals(n, n2)) {
print('n == n2');
}
}
class MapEquality {
const MapEquality();
bool equals(Map a, Map b) {
if (a.length != b.length) return false;
for (var key in a.keys) {
if (a[key] != b[key]) return false;
}
return true;
}
}Explanation
To create an empty map in Dart, you can use the literal map syntax:
var m = <String, int>{};Set key/value pairs using typical name[key] = val syntax:
m['k1'] = 7;
m['k2'] = 13;Printing a map with print(m) will show all of its key/value pairs:
print('map: $m');Get a value for a key with name[key]:
var v1 = m['k1'];
print('v1: $v1');If the key doesn’t exist, Dart returns null:
var v3 = m['k3'];
print('v3: $v3');The length property returns the number of key/value pairs in the map:
print('len: ${m.length}');The remove method removes key/value pairs from a map:
m.remove('k2');
print('map: $m');The clear method removes all key/value pairs from a map:
m.clear();
print('map: $m');The containsKey method checks if a key is present in the map:
var prs = m.containsKey('k2');
print('prs: $prs');You can also declare and initialize a new map in the same line:
var n = {'foo': 1, 'bar': 2};
print('map: $n');To check if two maps are equal, we can use a custom equality function:
var n2 = {'foo': 1, 'bar': 2};
if (MapEquality().equals(n, n2)) {
print('n == n2');
}The MapEquality class contains a method to check if two maps are equal by comparing their keys and values.