Serialize nested model class
This commit is contained in:
parent
236ef55230
commit
ea1ee1f9d3
3 changed files with 6 additions and 2 deletions
|
@ -6,6 +6,7 @@ import 'package:analyzer/dart/element/type.dart';
|
|||
import 'package:angel_serialize/angel_serialize.dart';
|
||||
import 'package:build/build.dart';
|
||||
import 'package:code_builder/code_builder.dart';
|
||||
import 'package:recase/recase.dart';
|
||||
import 'package:source_gen/source_gen.dart' hide LibraryBuilder;
|
||||
import 'build_context.dart';
|
||||
import 'context.dart';
|
||||
|
@ -24,6 +25,8 @@ TypeReference convertTypeReference(DartType t) {
|
|||
}
|
||||
|
||||
bool isModelClass(DartType t) {
|
||||
if (t == null) return false;
|
||||
|
||||
if (serializableTypeChecker.hasAnnotationOf(t.element))
|
||||
return true;
|
||||
|
||||
|
|
|
@ -78,7 +78,8 @@ class SerializerGenerator extends GeneratorForAnnotation<Serializable> {
|
|||
|
||||
// Serialize model classes via `XSerializer.toMap`
|
||||
else if (isModelClass(field.type)) {
|
||||
|
||||
var rc = new ReCase(field.type.name);
|
||||
serializedRepresentation = '${rc.pascalCase}Serializer.toMap(${field.name})';
|
||||
}
|
||||
|
||||
buf.write("'$alias': $serializedRepresentation");
|
||||
|
|
|
@ -13,7 +13,7 @@ abstract class AuthorSerializer {
|
|||
'name': name,
|
||||
'age': age,
|
||||
'books': books,
|
||||
'newest_book': newestBook,
|
||||
'newest_book': BookSerializer.toMap(newestBook),
|
||||
'created_at': createdAt.toIso8601String(),
|
||||
'updated_at': updatedAt.toIso8601String()
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue