generateDelegatedLocalization function

String generateDelegatedLocalization({
  1. required String name,
  2. required List properties,
  3. required String delegate,
})

Implementation

String generateDelegatedLocalization({
  required String name,
  required List properties,
  required String delegate,
}) {

  final delegatedLocalization = Class((b) {
    b
      ..name = '_$name'
      ..mixins.add(refer('DelegatedLocalization<$delegate>'))
      ..implements.add(refer(name))
      ..methods.addAll(properties.map((prop) {
        return Method((b) => b
          ..annotations.add(CodeExpression(Code('override')))
          ..type = MethodType.getter
          ..returns = refer('String')
          ..name = prop['name']
          ..lambda = true
          ..body = Code("localizations.${prop['alias'] as String}"));
      }));
  });
  final emitter = DartEmitter();
  return DartFormatter().format('${delegatedLocalization.accept(emitter)}');
}