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() {
  final Iterable<ParameterElement> requiredPositionalParams = parameters.where(
    (ParameterElement p) => p.isRequiredPositional,
  );
  final Iterable<ParameterElement> optionalPositionalParams = parameters.where(
    (ParameterElement p) => p.isOptionalPositional,
  );
  final Iterable<ParameterElement> namedParams = parameters.where(
    (ParameterElement p) => p.isNamed,
  );

  final StringBuffer buffer = StringBuffer();
  if (returnType != DartType.neverType) {
    buffer.write('$returnType ');
  }
  if (typeParameters.isNotEmpty) {
    buffer.write('<');
    buffer.write(typeParameters.toString());
    buffer.write('>');
  }
  buffer.write('Function');
  if (parameters.isNotEmpty) {
    buffer.write('(');
    if (requiredPositionalParams.isNotEmpty) {
      buffer.write(
        requiredPositionalParams.map((ParameterElement e) => '${e.type} ${e.name}').join(', '),
      );
    }
    if (optionalPositionalParams.isNotEmpty) {
      if (requiredPositionalParams.isNotEmpty) {
        buffer.write(', ');
      }
      buffer.write('[');
      buffer.write(
        optionalPositionalParams.map((ParameterElement e) => '${e.type} ${e.name}').join(', '),
      );
      buffer.write(']');
    }
    if (namedParams.isNotEmpty) {
      if (requiredPositionalParams.isNotEmpty || optionalPositionalParams.isNotEmpty) {
        buffer.write(', ');
      }
      buffer.write('{');
      buffer.write(
        namedParams.map((ParameterElement e) => '${e.type} ${e.name}').join(', '),
      );
      buffer.write('}');
    }
    buffer.write(')');
  }
  if (isNullable) {
    buffer.write('?');
  }
  return buffer.toString();
}