getDartDefaultFor static method
Tuple<Code, bool>
getDartDefaultFor(
- FieldPrimitive primitive,
- List<
SchemaFieldType> typeArguments, - String typeId, [
- bool anonymous = false,
Returns the default value as Dart code for a primitive type. It returns the Dart code and a boolean that indicates if the type is a union
Implementation
static Tuple<Code, bool> getDartDefaultFor(FieldPrimitive primitive, List<SchemaFieldType> typeArguments, String typeId, [bool anonymous = false]) {
if(primitive == FieldPrimitive.list) {
return tuple(anonymous ? Code("const []") : Code("const List<${mapper[typeArguments.first.primitive]}>()"), false);
}
if(primitive == FieldPrimitive.map) {
return tuple(anonymous ? Code("const {}") : Code("const Map<${mapper[typeArguments.first.primitive]}, ${mapper[typeArguments.last.primitive]}>()"), false);
}
if(primitive == FieldPrimitive.custom) {
var typeReference = TypeReferenceRegistry.getReference(typeId);
var type = typeReference.type;
switch(type.modifier) {
case SchemaTypeModifier.$enum:
return tuple(Code("${type.name}.${type.fields.first.name}"), false);
case SchemaTypeModifier.struct:
return tuple(Code("${type.name}()"), false);
case SchemaTypeModifier.union:
return tuple(Code("${type.name}.empty()"), true);
}
}
var defaultValue = defaults[primitive];
if(defaultValue == null) {
throw Exception("Default value for $primitive not found.");
}
return tuple(defaultValue, false);
}