dartToJsValue function

dynamic dartToJsValue(
  1. JsScript script,
  2. dynamic data, [
  3. Map? cache
])

Implementation

dynamic dartToJsValue(JsScript script, dynamic data, [Map? cache]) {
  if (cache == null) cache = {};
  var ret = cache[data];
  if (ret != null) return ret;
  if (data is Map) {
    JsValue value = script.newObject();
    cache[data] = value;
    for (var key in data.keys) {
      value[key] = dartToJsValue(script, data[key], cache);
    }
    return value;
  } else if (data is List) {
    JsValue value = script.newArray();
    cache[data] = value;
    for (int i = 0, t = data.length; i < t; ++i) {
      value[i] = dartToJsValue(script, data[i], cache);
    }
    return value;
  } else {
    return data;
  }
}