getBuilder static method

FieldInputBuilder? getBuilder(
  1. DeskField field
)

Get the input builder for a given field type using switch-case for defaults. Returns null if no builder is available for the type.

Implementation

static FieldInputBuilder? getBuilder(DeskField field) {
  // Check custom registry first
  if (_customRegistry.containsKey(field.runtimeType)) {
    return _customRegistry[field.runtimeType];
  }

  // Default field builders using switch-case
  switch (field) {
    case DeskTextField():
      return (_, data, onChanged) => DeskTextInput(
        key: ValueKey(field.name),
        field: field,
        data: data,
        onChanged: (value) => onChanged(field.name, value),
      );
    case DeskStringField():
      return (_, data, onChanged) => DeskStringInput(
        key: ValueKey(field.name),
        field: field,
        data: data,
        onChanged: (value) => onChanged(field.name, value),
      );
    case DeskNumberField():
      return (_, data, onChanged) => DeskNumberInput(
        key: ValueKey(field.name),
        field: field,
        data: data,
        onChanged: (value) => onChanged(field.name, value),
      );
    case DeskBooleanField():
      return (_, data, onChanged) => DeskBooleanInput(
        key: ValueKey(field.name),
        field: field,
        data: data,
        onChanged: (value) => onChanged(field.name, value),
      );
    case DeskCheckboxField():
      return (_, data, onChanged) => DeskCheckboxInput(
        key: ValueKey(field.name),
        field: field,
        data: data,
        onChanged: (value) => onChanged(field.name, value),
      );
    case DeskDateField():
      return (_, data, onChanged) => DeskDateInput(
        key: ValueKey(field.name),
        field: field,
        data: data,
        onChanged: (value) => onChanged(field.name, value),
      );
    case DeskDateTimeField():
      return (_, data, onChanged) => DeskDateTimeInput(
        key: ValueKey(field.name),
        field: field,
        data: data,
        onChanged: (value) => onChanged(field.name, value),
      );
    case DeskDropdownField():
      return (_, data, onChanged) => DeskDropdownInput(
        key: ValueKey(field.name),
        field: field,
        data: data,
        onChanged: (value) => onChanged(field.name, value),
      );
    case DeskMultiDropdownField():
      return (_, data, onChanged) => DeskMultiDropdownInput(
        key: ValueKey(field.name),
        field: field,
        data: data,
        onChanged: (value) => onChanged(field.name, value),
      );
    case DeskUrlField():
      return (_, data, onChanged) => DeskUrlInput(
        key: ValueKey(field.name),
        field: field,
        data: data,
        onChanged: (value) => onChanged(field.name, value),
      );

    case DeskImageField():
      return (_, data, onChanged) => DeskImageInput(
        key: ValueKey(field.name),
        field: field,
        data: data,
        dataSource: GetIt.I<DeskViewModel>().dataSource,
        onChanged: (value) => onChanged(field.name, value),
      );
    case DeskFileField():
      return (_, data, onChanged) => DeskFileInput(
        key: ValueKey(field.name),
        field: field,
        data: data,
        onChanged: (value) => onChanged(field.name, value),
      );
    case DeskArrayField():
      DeskArrayField.registerInputFactory(
        <T>(f, data, onChanged, key) => DeskArrayInput<T>(
          key: key,
          field: f,
          data: data,
          onChanged: onChanged,
        ),
      );
      return (_, data, onChanged) => field.buildInput(
        key: ValueKey(field.name),
        data: data,
        onChanged: (value) => onChanged(field.name, value),
      );
    case DeskBlockField():
      return (_, data, onChanged) => DeskBlockInput(
        key: ValueKey(field.name),
        field: field,
        data: data,
        onChanged: (value) => onChanged(field.name, value),
      );
    case DeskObjectField():
      return (_, data, onChanged) => DeskObjectInput(
        key: ValueKey(field.name),
        field: field,
        data: data,
        onChanged: (value) => onChanged(field.name, value),
      );

    case DeskGeopointField():
      return (_, data, onChanged) => DeskGeopointInput(
        key: ValueKey(field.name),
        field: field,
        data: data,
        onChanged: (value) => onChanged(field.name, value),
      );
    case DeskColorField():
      return (_, data, onChanged) => DeskColorInput(
        key: ValueKey(field.name),
        field: field,
        data: data,
        onChanged: (value) => onChanged(field.name, value),
      );
    default:
      return null;
  }
}