FSelectGroup<T> constructor

FSelectGroup<T>({
  1. required FSelectGroupController<T> controller,
  2. required List<FSelectGroupItem<T>> children,
  3. FSelectGroupStyle? style,
  4. Widget? label,
  5. Widget? description,
  6. ValueChanged<Set<T>>? onChange,
  7. ValueChanged<(T, bool)>? onSelect,
  8. Widget errorBuilder(
    1. BuildContext,
    2. String
    ) = FFormFieldProperties.defaultErrorBuilder,
  9. FormFieldSetter<Set<T>>? onSaved,
  10. FormFieldValidator<Set<T>>? validator,
  11. String? forceErrorText,
  12. bool enabled = true,
  13. AutovalidateMode? autovalidateMode,
  14. Key? key,
})

Creates a FSelectGroup.

Implementation

FSelectGroup({
  required this.controller,
  required this.children,
  this.style,
  this.label,
  this.description,
  this.onChange,
  this.onSelect,
  Widget Function(BuildContext, String) errorBuilder = FFormFieldProperties.defaultErrorBuilder,
  super.onSaved,
  super.validator,
  super.forceErrorText,
  super.enabled = true,
  super.autovalidateMode,
  super.key,
}) : super(
       initialValue: controller.value,
       errorBuilder: errorBuilder,
       builder: (field) {
         final state = field as _State;
         final groupStyle = style ?? state.context.theme.selectGroupStyle;
         final formStates = {if (!enabled) WidgetState.disabled, if (state.errorText != null) WidgetState.error};

         return FLabel(
           axis: Axis.vertical,
           states: formStates,
           style: groupStyle,
           label: label,
           description: description,
           error: state.errorText == null ? null : errorBuilder(state.context, state.errorText!),
           child: Column(
             children: [
               for (final child in children)
                 Padding(
                   padding: groupStyle.itemPadding,
                   child: FSelectGroupItemData<T>(
                     controller: controller,
                     style: groupStyle,
                     selected: controller.contains(child.value),
                     child: child,
                   ),
                 ),
             ],
           ),
         );
       },
     );