toString method

  1. @override
String toString()
override

A string representation of this object.

Some classes have a default textual representation, often paired with a static parse function (like int.parse). These classes will provide the textual representation as their string representation.

Other classes have no meaningful textual representation that a program will care about. Such classes will typically override toString to provide useful information when inspecting the object, mainly for debugging or logging.

Implementation

@override
String toString() {
  if (isRecordType) {
    var positionalFields =
        generics.where((f) => f.recordFieldName == null).toList();
    var namedFields =
        generics.where((f) => f.recordFieldName != null).toList();

    return [
      '(',
      positionalFields.map((t) => t.toString()).join(', '),
      if (positionalFields.isNotEmpty || positionalFields.length == 1) ',',
      if (namedFields.isNotEmpty) ...[
        ' {',
        namedFields.map((f) => '$f ${f.recordFieldName!}').join(', '),
        '}',
      ],
      ')',
      if (nullable) '?',
    ].join();
  }

  var genericsString = generics.isNotEmpty ? '<${generics.join(',')}>' : '';
  var nullableString = nullable ? '?' : '';
  var urlString = url != null ? '$url:' : '';
  var classRepr = isVectorType ? '$className($vectorDimension)' : className;
  return '$urlString$classRepr$genericsString$nullableString';
}