getBuilder static method
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;
}
}