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 name = element.name;
builder
..name = name.repositoryName
..methods.add(
Method(
(builder) => builder
..static = true
..returns = Reference(name.wrapperClassName)
..name = 'find'
..requiredParameters.add(
Parameter(
(builder) => builder
..type = Reference('VibeContainer')
..name = 'container',
),
)
..requiredParameters.add(
Parameter(
(builder) => builder
..type = Reference('VibeObserver')
..name = 'observer',
),
)
..body = Code('''
final registered = container.find<${name.observableClassName}>(${name.keyName}) ??
() {
final override = container.findOverrides(${name.keyName});
final initial = override != null ? override() as $name : $name();
final ret = ${name.observableClassName}(
initial
..\$container = container,
() {
container.remove(${name.keyName});
},
)..\$container = container;
container.add(${name.keyName}, ret);
return ret;
}();
return ${name.wrapperClassName}(observer, registered);
'''),
),
);
return builder.build().accept(_emitter).toString();
}