writeClassEncode method

  1. @override
void writeClassEncode(
  1. ArkTSOptions generatorOptions,
  2. Root root,
  3. Indent indent,
  4. Class klass,
  5. Set<String> customClassNames,
  6. Set<String> customEnumNames, {
  7. required String dartPackageName,
})
override

编写dataclass的tolist()方法 toList(): Object[]{ let arr: Object[] = new Array(); arr.push(field1); arr.push(field2); return arr; }

Implementation

@override
void writeClassEncode(
  ArkTSOptions generatorOptions,
  Root root,
  Indent indent,
  Class klass,
  Set<String> customClassNames,
  Set<String> customEnumNames, {
  required String dartPackageName,
}) {
  indent.newln();
  indent.write('toList(): Object[] ');
  indent.addScoped('{', '}', () {
    indent.writeln('let arr: Object[] = new Array();');
    for (final NamedType field in getFieldsInSerializationOrder(klass)) {
      final String fieldName = field.name;
      final HostDatatype hostDatatype = getFieldHostDatatype(
          field,
          root.classes,
          root.enums,
          (TypeDeclaration x) => _arkTSTypeForBuiltinDartType(x));
      if (!hostDatatype.isBuiltin &&
          customClassNames.contains(field.type.baseName)) {
        indent.writeln('''
if (this.$fieldName instanceof Array) {
    arr.push(this.$fieldName);
  } else {
    arr.push(this.$fieldName.toList());
  }''');
      } else {
        indent.writeln('arr.push(this.$fieldName);');
      }
    }
    indent.writeln('return arr;');
  });
}