toString method
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();
}