ElicitationFieldSchema.fromJson constructor
Dispatch a raw JSON Schema fragment to the matching typed field.
Implementation
factory ElicitationFieldSchema.fromJson(Map<String, dynamic> json) {
final type = json['type'];
// Single-select enum: an `enum` present on a string (or untyped) schema.
if (json['enum'] is List && (type == null || type == 'string')) {
return EnumElicitationField.fromJson(json);
}
// Multi-select enum (SEP-1330): array whose items carry an `enum`.
if (type == 'array') {
final items = json['items'];
if (items is Map && items['enum'] is List) {
return MultiSelectEnumElicitationField.fromJson(json);
}
return GenericElicitationField.fromJson(json);
}
switch (type) {
case 'string':
return StringElicitationField.fromJson(json);
case 'number':
case 'integer':
return NumberElicitationField.fromJson(json);
case 'boolean':
return BooleanElicitationField.fromJson(json);
default:
return GenericElicitationField.fromJson(json);
}
}