String mapToString(
Map m
)

Returns a string representing the specified map. The returned string looks like this: '{key0: value0, key1: value1, ... keyN: valueN}'. The value returned by its toString method is used to represent each key or value.

If the map collection contains a reference to itself, either directly as a key or value, or indirectly through other collections or maps, the contained reference is rendered as '{...}'. This prevents the infinite regress that would otherwise occur. So, for example, calling this method on a map whose sole entry maps the string key 'me' to a reference to the map would return '{me: {...}}'.

A typical implementation of a map's toString method will simply return the results of this method applied to the collection.

Source

/**
 * Returns a string representing the specified map. The returned string
 * looks like this: [:'{key0: value0, key1: value1, ... keyN: valueN}':].
 * The value returned by its [toString] method is used to represent each
 * key or value.
 *
 * If the map collection contains a reference to itself, either
 * directly as a key or value, or indirectly through other collections
 * or maps, the contained reference is rendered as [:'{...}':]. This
 * prevents the infinite regress that would otherwise occur. So, for example,
 * calling this method on a map whose sole entry maps the string key 'me'
 * to a reference to the map would return [:'{me: {...}}':].
 *
 * A typical implementation of a map's [toString] method will
 * simply return the results of this method applied to the collection.
 */
static String mapToString(Map m) {
  // Reuse the list in IterableBase for detecting toString cycles.
  if (_isToStringVisiting(m)) { return '{...}'; }

  var result = new StringBuffer();
  try {
    _toStringVisiting.add(m);
    result.write('{');
    bool first = true;
    m.forEach((k, v) {
      if(!first) {
        result.write(', ');
      }
      first = false;
      result.write(k);
      result.write(': ');
      result.write(v);
    });
    result.write('}');
  } finally {
    assert(identical(_toStringVisiting.last, m));
    _toStringVisiting.removeLast();
  }

  return result.toString();
}