toCode method

  1. @override
List<String> toCode()
override

Implementation

@override
List<String> toCode() {
  var _lines = super.toCode();

  var _jsonSerializable = jsonSerializable ?? false;

  if (name == null) return _lines;

  var baseLine = '';
  if ((isExtends ?? false) && (baseName ?? '').isNotEmpty) {
    baseLine = 'extends $baseName';
  }
  var classStartLine = [
    if (_jsonSerializable) '@JsonSerializable()',
    'class $name $baseLine {'
  ];
  _lines += classStartLine;

  fields
      ?.where((field) => (!(field.superOnly ?? false) && !field.isPrivate))
      .forEach((field) {
    if (_jsonSerializable) {
      _lines.add("@JsonKey(name: '${field.name}')");
    }
    _lines += field.toCode();
    _lines.add('');
  });

  _lines = _lines + _constructorCode();

  if (jsonSerializable ?? false) {
    _lines.add('');
    var jsFromLine1 = '$name.fromJson(Map<String, dynamic> json)';
    var jsFromLine2 = '_\$${name}FromJson(json);';
    var jsFromLine = 'factory $jsFromLine1 => $jsFromLine2';
    _lines.add(jsFromLine);
  }

  if (jsonSerializable ?? false) {
    _lines.add('');
    _lines.add('@override');
    _lines.add('Map<String, dynamic> toJson() => _\$${name}ToJson(this);');
  }

  // class end line
  _lines.add('}');

  return _lines;
}