generateEquality static method

String? generateEquality(
  1. DartType type, [
  2. bool nullable = false
])

Implementation

static String? generateEquality(DartType type, [bool nullable = false]) {
  if (type is InterfaceType) {
    if (const TypeChecker.fromRuntime(List).isAssignableFromType(type)) {
      if (type.typeArguments.length == 1) {
        var eq = generateEquality(type.typeArguments[0]);
        return 'ListEquality<${type.typeArguments[0].element!.name}>($eq)';
      } else {
        return 'ListEquality()';
      }
    } else if (const TypeChecker.fromRuntime(Map)
        .isAssignableFromType(type)) {
      if (type.typeArguments.length == 2) {
        var keq = generateEquality(type.typeArguments[0]),
            veq = generateEquality(type.typeArguments[1]);
        return 'MapEquality<${type.typeArguments[0].element!.name}, ${type.typeArguments[1].element!.name}>(keys: $keq, values: $veq)';
      } else {
        return 'MapEquality()';
      }
    }

    return nullable ? null : 'DefaultEquality<${type.element.name}>()';
  } else {
    return 'DefaultEquality()';
  }
}