CustomEvent(String type, { bool canBubble: true, bool cancelable: true, Object detail })

Source

factory CustomEvent(String type,
    {bool canBubble: true, bool cancelable: true, Object detail}) {

  final CustomEvent e = document._createEvent('CustomEvent');

  e._dartDetail = detail;

  // Only try setting the detail if it's one of these types to avoid
  // first-chance exceptions. Can expand this list in the future as needed.
  if (detail is List || detail is Map || detail is String || detail is num) {
    try {
      detail = convertDartToNative_SerializedScriptValue(detail);
      e._initCustomEvent(type, canBubble, cancelable, detail);
    } catch(_) {
      e._initCustomEvent(type, canBubble, cancelable, null);
    }
  } else {
    e._initCustomEvent(type, canBubble, cancelable, null);
  }

  return e;
}