toNative static method

dynamic toNative(
  1. DBusValue value
)

Implementation

static dynamic toNative(DBusValue value) {
  if (value is DBusString ||
      value is DBusBoolean ||
      value is DBusByte ||
      value is DBusInt16 ||
      value is DBusUint16 ||
      value is DBusInt32 ||
      value is DBusUint32 ||
      value is DBusInt64 ||
      value is DBusUint64 ||
      value is DBusDouble) {
    // DBusObjectPath extend from DBusString so it should be placed here
    if (value is DBusObjectPath) {
      return value.value;
    }

    return '${value.signature.value}:${value.toNative()}';
    // return value.toNative();
  } else if (value is DBusSignature) {
    return value.value;
  }

  if (value is DBusArray) {
    return value.children.map(toNative).toList();
  }

  if (value is DBusDict) {
    return Map.fromEntries(
      value.children.entries
          .map((e) => MapEntry(toNative(e.key), toNative(e.value))),
    );
  }

  if (value is DBusStruct) {
    return value.children.map(toNative).toList();
  }

  if (value is DBusVariant) {
    return '${value.signature.value}:${toNative(value.value)}';
    // return toNative(value.value);
  }

  throw UnsupportedError('Unsupported DBusValue type: ${value.runtimeType}');
}