ElicitationFieldSchema.fromJson constructor

ElicitationFieldSchema.fromJson(
  1. Map<String, dynamic> json
)

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);
  }
}