addMethods method
void
addMethods()
Implementation
void addMethods() {
for (MethodElement m in element.methods) {
if (m.name[0] == '_') {
continue;
}
final args = m.parameters
.map((e) => e.isNamed ? '${e.name}: ${e.name}' : e.name)
.toList()
.join(', ');
final typedArgs = _getTypedArguments(m.parameters);
String static = m.isStatic ? 'static ' : '';
final name = _getName(m);
buffer.writeln('');
buffer.writeln(
' $static${m.returnType} Function($typedArgs)? _${m.name};');
buffer.writeln(' // ignore: non_constant_identifier_names');
buffer.writeln(
' ${static}set $name(${m.returnType} Function($typedArgs) value) {');
buffer.writeln(' _${m.name} = value;');
buffer.writeln(' }');
buffer.writeln('');
if (singleton != null) {
final stat = m.isStatic ? singleton : 'wrap$singleton!';
buffer.writeln(' $static$m => _${m.name} != null ? '
'_${m.name}!($args) : $stat.${m.name}($args);');
} else {
if (!m.isStatic) {
buffer.writeln(' @override');
}
final parent = m.isStatic ? element.name : 'super';
buffer.writeln(
' $static$m => (_${m.name} ?? $parent.${m.name})($args);');
}
}
}