createImplContent function
Implementation
Spec createImplContent(ClientController controller) {
return Class(
(b) => b
..name = controller.implementationName
..implements.add(refer(controller.interfaceName))
..constructors.add(
Constructor(
(b) => b
..constant = true
..optionalParameters.addAll([
Parameter(
(b) => b
..name = 'client'
..type = refer((RevaliClient).name)
..named = true
..required = true,
),
Parameter(
(b) => b
..name = 'storage'
..type = refer((Storage).name)
..named = true
..required = true,
),
if (controller.hasWebsockets)
Parameter(
(b) => b
..name = 'websocket'
..type = refer('WebSocketConnect')
..named = true
..required = true,
),
])
..initializers.addAll([
refer('_client').assign(refer('client')).code,
refer('_storage').assign(refer('storage')).code,
if (controller.hasWebsockets)
refer('_websocket').assign(refer('websocket')).code,
]),
),
)
..fields.addAll([
Field(
(b) => b
..modifier = FieldModifier.final$
..name = '_client'
..type = refer((RevaliClient).name),
),
Field(
(b) => b
..modifier = FieldModifier.final$
..name = '_storage'
..type = refer((Storage).name),
),
if (controller.hasWebsockets)
Field(
(b) => b
..modifier = FieldModifier.final$
..name = '_websocket'
..type = refer('WebSocketConnect'),
),
])
..methods.addAll([
for (final method in controller.methods)
if (!method.isExcluded) createImplMethod(method),
]),
);
}