Generate constructors map as static

This commit is contained in:
Kenneth Bruen 2021-12-20 03:37:30 +02:00
parent 113808091e
commit 70195bd904
Signed by: kbruen
GPG key ID: C1980A470C3EE5B1

View file

@ -240,26 +240,28 @@ abstract class TdBase {
return 'td::TdBase()'; return 'td::TdBase()';
} }
static final constructors = {
""";
for (final o in scheme.objects) {
final normName = o.name.pascalCase;
result += '''
'${o.name}': (json) => o.$normName.fromJson(json),
''';
}
result += """
};
static TdBase? fromJson(Map<String, dynamic>? json) { static TdBase? fromJson(Map<String, dynamic>? json) {
if (json == null) { if (json == null) {
return null; return null;
} }
final type = json['@type'] as String; final type = json['@type'] as String;
final constructors = {
""";
for (final o in scheme.objects) {
final normName = o.name.pascalCase;
result += '''
'${o.name}': (json) => o.$normName.fromJson(json),
''';
}
result += '''
};
return constructors[type]!(json); return constructors[type]!(json);
} }
} }
'''; """;
return result; return result;
} }
String makeAbstractFile(TlSchema scheme) { String makeAbstractFile(TlSchema scheme) {