ClassSpecBuilder function
Implementation
Class ClassSpecBuilder(SpecDefinitionContext context) {
final specRef = MixTypes.spec.symbol!;
final specClassName = context.options.specClassName;
final fields = context.options.fields;
return Class((b) {
b.name = specClassName;
b.extend = refer('$specRef<$specClassName>');
b.docs.addAll([
'/// A specification that defines the visual properties of $specClassName.',
'///',
'/// To retrieve an instance of [$specClassName], use the [$specClassName.of] method with a',
'/// [BuildContext], or the [$specClassName.from] method with [MixData]',
]);
b.fields.addAll(fields.classFields);
b.constructors.add(
Constructor((builder) {
builder.constant = true;
builder.optionalParameters.addAll(fields.constructorParams);
builder.docs.addAll([
'/// Creates a [$specClassName] with the given fields',
'///',
'// All parameters are optional',
]);
}),
);
b.methods.addAll([
StaticMethodOfBuilder(className: specClassName),
StaticMethodFromBuilder(className: specClassName),
MethodCopyWithBuilder(className: specClassName, fields: fields),
MethodLerpBuilder(
className: specClassName,
fields: fields,
emitter: _emitter,
),
GetterPropsBuilder(className: specClassName, fields: fields),
]);
});
}