dartify function
Returns Dart representation from JS Object.
The optional customDartify
function may return null
to indicate,
that it could not handle the given JS Object.
Implementation
dynamic dartify(
Object? jsObject, [
Object? Function(Object? object)? customDartify,
]) {
if (_isBasicType(jsObject)) {
return jsObject;
}
// Handle list
if (jsObject is Iterable) {
return jsObject.map((item) => dartify(item, customDartify)).toList();
}
var jsDate = js.dartifyDate(jsObject!);
if (jsDate != null) {
return jsDate;
}
Object? value = customDartify?.call(jsObject);
if (value == null) {
var keys = js.objectKeys(jsObject);
var map = <String, dynamic>{};
for (final key in keys) {
map[key] = dartify(util.getProperty(jsObject, key), customDartify);
}
return map;
}
return value;
}