How to remove typename from graph QL response in flutter

Viewed 399

can anyone help me to remove typename and unwanted fields from graph QL from flutter.how to get response as in postman. Iam using the package https://pub.dev/packages/graphql

1 Answers

I had the same issue, I could not find a simple way to disable __typename, so I wrote a small program,

  T removeTypename<T>(T data) =>
      _removeUnwantedKeys(data, ['__typename']);

  T _removeUnwantedKeys<T>(T data, List keysToRemove) {
    if (data is Map && data.containsAnyOf(keysToRemove)) {
      Map d = {};
      data.forEach((key, value) {
        if (!keysToRemove.contains(key)) d[key] = _removeUnwantedKeys(value,keysToRemove);
      });
      return d as T;
    } else if (data is List)
      return data.map((c) => _removeUnwantedKeys(c,keysToRemove)).toList() as T;
    else
      return data;
  }
extension MapsMadeEasy<U, V> on Map<U, V>? {
  bool containsAnyOf(List keys) {
    if (this == null) return false;

    return this!.entries.any((element) => keys.contains(element.key));
  }
}

Related