Implementation
factory CustomEvent(
String type, {
bool canBubble = true,
bool cancelable = true,
Object? detail,
}) {
final CustomEvent e = document._createEvent('CustomEvent') as 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;
}