FSelect<T> constructor
FSelect<T> ({
- required Map<
String, T> items, - FSelectController<
T> ? controller, - FSelectStyle style()?,
- bool autofocus = false,
- FocusNode? focusNode,
- FFieldBuilder<
FSelectStyle> builder = _fieldBuilder, - FFieldIconBuilder<
FSelectStyle> ? prefixBuilder, - FFieldIconBuilder<
FSelectStyle> ? suffixBuilder = defaultIconBuilder, - Widget? label,
- Widget? description,
- bool enabled = true,
- ValueChanged<
T?> ? onChange, - FormFieldSetter<
T> ? onSaved, - AutovalidateMode autovalidateMode = AutovalidateMode.onUnfocus,
- String? forceErrorText,
- FormFieldValidator<
T> validator = _defaultValidator, - Widget errorBuilder() = FFormFieldProperties.defaultErrorBuilder,
- String? hint,
- TextAlign textAlign = TextAlign.start,
- TextAlignVertical? textAlignVertical,
- TextDirection? textDirection,
- bool expands = false,
- MouseCursor mouseCursor = SystemMouseCursors.click,
- bool canRequestFocus = true,
- bool clearable = false,
- AlignmentGeometry anchor = AlignmentDirectional.topStart,
- AlignmentGeometry fieldAnchor = AlignmentDirectional.bottomStart,
- FPortalConstraints popoverConstraints = const FAutoWidthPortalConstraints(maxHeight: 300),
- FPortalSpacing spacing = const FPortalSpacing(4),
- Offset shift() = FPortalShift.flip,
- Offset offset = Offset.zero,
- FPopoverHideRegion hideRegion = FPopoverHideRegion.excludeChild,
- bool autoHide = true,
- Widget contentEmptyBuilder() = defaultContentEmptyBuilder,
- ScrollController? contentScrollController,
- bool contentScrollHandles = false,
- ScrollPhysics contentPhysics = const ClampingScrollPhysics(),
- FItemDivider contentDivider = FItemDivider.none,
- T? initialValue,
- Key? key,
Creates a FSelect from the given items
.
For more control over the appearance of items, use FSelect.rich.
Contract
Each key in items
must map to a unique value. Having multiple keys map to the same value will result in
undefined behavior.
Implementation
factory FSelect({
required Map<String, T> items,
FSelectController<T>? controller,
FSelectStyle Function(FSelectStyle)? style,
bool autofocus = false,
FocusNode? focusNode,
FFieldBuilder<FSelectStyle> builder = _fieldBuilder,
FFieldIconBuilder<FSelectStyle>? prefixBuilder,
FFieldIconBuilder<FSelectStyle>? suffixBuilder = defaultIconBuilder,
Widget? label,
Widget? description,
bool enabled = true,
ValueChanged<T?>? onChange,
FormFieldSetter<T>? onSaved,
AutovalidateMode autovalidateMode = AutovalidateMode.onUnfocus,
String? forceErrorText,
FormFieldValidator<T> validator = _defaultValidator,
Widget Function(BuildContext, String) errorBuilder = FFormFieldProperties.defaultErrorBuilder,
String? hint,
TextAlign textAlign = TextAlign.start,
TextAlignVertical? textAlignVertical,
TextDirection? textDirection,
bool expands = false,
MouseCursor mouseCursor = SystemMouseCursors.click,
bool canRequestFocus = true,
bool clearable = false,
AlignmentGeometry anchor = AlignmentDirectional.topStart,
AlignmentGeometry fieldAnchor = AlignmentDirectional.bottomStart,
FPortalConstraints popoverConstraints = const FAutoWidthPortalConstraints(maxHeight: 300),
FPortalSpacing spacing = const FPortalSpacing(4),
Offset Function(Size, FPortalChildBox, FPortalBox) shift = FPortalShift.flip,
Offset offset = Offset.zero,
FPopoverHideRegion hideRegion = FPopoverHideRegion.excludeChild,
bool autoHide = true,
Widget Function(BuildContext, FSelectStyle) contentEmptyBuilder = defaultContentEmptyBuilder,
ScrollController? contentScrollController,
bool contentScrollHandles = false,
ScrollPhysics contentPhysics = const ClampingScrollPhysics(),
FItemDivider contentDivider = FItemDivider.none,
T? initialValue,
Key? key,
}) {
final inverse = {for (final MapEntry(:key, :value) in items.entries) value: key};
return FSelect<T>.rich(
controller: controller,
style: style,
autofocus: autofocus,
focusNode: focusNode,
builder: builder,
prefixBuilder: prefixBuilder,
suffixBuilder: suffixBuilder,
label: label,
description: description,
enabled: enabled,
onChange: onChange,
onSaved: onSaved,
autovalidateMode: autovalidateMode,
forceErrorText: forceErrorText,
validator: validator,
errorBuilder: errorBuilder,
format: (value) => inverse[value]!,
hint: hint,
textAlign: textAlign,
textAlignVertical: textAlignVertical,
textDirection: textDirection,
expands: expands,
mouseCursor: mouseCursor,
canRequestFocus: canRequestFocus,
clearable: clearable,
anchor: anchor,
fieldAnchor: fieldAnchor,
popoverConstraints: popoverConstraints,
spacing: spacing,
shift: shift,
offset: offset,
hideRegion: hideRegion,
autoHide: autoHide,
contentEmptyBuilder: contentEmptyBuilder,
contentScrollController: contentScrollController,
contentScrollHandles: contentScrollHandles,
contentPhysics: contentPhysics,
contentDivider: contentDivider,
initialValue: initialValue,
key: key,
children: [for (final MapEntry(:key, :value) in items.entries) FSelectItem(title: Text(key), value: value)],
);
}