createCopyWith static method

String createCopyWith({
  1. required String className,
  2. required Map<String, String> fields,
})

Implementation

static String createCopyWith({
  required String className,
  required Map<String, String> fields,
}) {
  final args = StringBuffer();
  args.write('{');
  for (var element in fields.entries) {
    final value = element.value;
    args.write(value);
    if (value[value.length - 1] != '?') args.write('?');
    args.write(' ');
    args.write(element.key + ',');
  }
  args.write('}');

  final code = StringBuffer();
  code.write('return $className(');

  for (var element in fields.entries) {
    final key = element.key;
    code.write(key);
    code.write(':');
    code.write('$key ?? this.$key,');
  }
  code.write(');');

  return createFunc(
    returns: '// ignore: unused_element\n' + className,
    name: 'copyWith',
    args: args.toString(),
    code: code.toString(),
    private: false,
    isGenerated: false,
  );
}