SmartSelect<T>.multiple constructor
- Key key,
- String title,
- String placeholder = 'Select one or more',
- List<
T> selectedValue, - List<
S2Choice< selectedChoice,T> > - S2MultiSelectedResolver<
T> selectedResolver, - ValueChanged<
S2MultiSelected< onChange,T> > - S2ChoiceSelect<
S2MultiState< onSelect,T> , S2Choice<T> > - S2ModalOpen<
S2MultiState< onModalOpen,T> > - S2ModalClose<
S2MultiState< onModalClose,T> > - S2ModalWillOpen<
S2MultiState< onModalWillOpen,T> > - S2ModalWillClose<
S2MultiState< onModalWillClose,T> > - S2Validation<
S2MultiChosen< validation,T> > - S2Validation<
S2MultiChosen< modalValidation,T> > - List<
S2Choice< choiceItems,T> > - S2ChoiceLoader<
T> choiceLoader, - S2MultiBuilder<
T> builder, - S2WidgetBuilder<
S2MultiState< tileBuilder,T> > - S2WidgetBuilder<
S2MultiState< modalBuilder,T> > - S2WidgetBuilder<
S2MultiState< modalHeaderBuilder,T> > - S2ListWidgetBuilder<
S2MultiState< modalActionsBuilder,T> > - S2WidgetBuilder<
S2MultiState< modalConfirmBuilder,T> > - S2WidgetBuilder<
S2MultiState< modalDividerBuilder,T> > - S2WidgetBuilder<
S2MultiState< modalFilterBuilder,T> > - S2WidgetBuilder<
S2MultiState< modalFilterToggleBuilder,T> > - S2ComplexWidgetBuilder<
S2MultiState< choiceBuilder,T> , S2Choice<T> > - S2ComplexWidgetBuilder<
S2MultiState< choiceTitleBuilder,T> , S2Choice<T> > - S2ComplexWidgetBuilder<
S2MultiState< choiceSubtitleBuilder,T> , S2Choice<T> > - S2ComplexWidgetBuilder<
S2MultiState< choiceSecondaryBuilder,T> , S2Choice<T> > - IndexedWidgetBuilder choiceDividerBuilder,
- S2WidgetBuilder<
S2MultiState< choiceEmptyBuilder,T> > - S2ComplexWidgetBuilder<
S2MultiState< groupBuilder,T> , S2Group<T> > - S2ComplexWidgetBuilder<
S2MultiState< groupHeaderBuilder,T> , S2Group<T> > - S2ChoiceConfig choiceConfig,
- S2ChoiceStyle choiceStyle,
- S2ChoiceStyle choiceActiveStyle,
- S2ChoiceType choiceType,
- S2ChoiceLayout choiceLayout,
- Axis choiceDirection,
- bool choiceGrouped,
- bool choiceDivider,
- SliverGridDelegate choiceGrid,
- int choiceGridCount,
- double choiceGridSpacing,
- int choicePageLimit,
- Duration choiceDelay,
- S2GroupConfig groupConfig,
- bool groupEnabled,
- bool groupSelector,
- bool groupCounter,
- S2GroupSort groupSortBy,
- S2GroupHeaderStyle groupHeaderStyle,
- S2ModalConfig modalConfig,
- S2ModalStyle modalStyle,
- S2ModalHeaderStyle modalHeaderStyle,
- S2ModalType modalType,
- String modalTitle,
- bool modalConfirm,
- bool modalHeader,
- bool modalFilter,
- bool modalFilterAuto,
- String modalFilterHint,
Constructor for multiple choice
The title
argument is text to display in trigger widget and modal header.
The placeholder
argument is text to display when there is no selected choice.
The selectedValue
argument is current selected value.
The selectedChoice
argument is current selected choice.
The selectedResolver
is function to resolve selectedChoice
from selectedValue
The onChange
called when value changed.
The onSelect
called when selection has been made.
The onModalOpen
called when modal opened.
The onModalClose
called when modal closed.
The onModalWillOpen
called when modal will open.
The onModalWillClose
called when modal will close.
The validation
is function to validate the selected.
The modalValidation
is function to validate the choice selection in the modal.
The choiceItems
is List of S2Choice item to generate the choices.
The choiceLoader
is function to load the choice items.
The builder
is collection of builder for single choice widget.
The tileBuilder
is shortcut to builder.tile
,
a widget builder to customize tile widget.
The modalBuilder
is shortcut to builder.modal
,
a widget builder to customize modal widget.
The modalHeaderBuilder
is shortcut to builder.modalHeader
,
a widget builder to customize modal header widget.
The modalActionsBuilder
is shortcut to builder.modalActions
,
a widget builder to customize modal actions widget.
The modalConfirmBuilder
is shortcut to builder.modalConfirm
,
a widget builder to customize modal confirm action widget.
The modalDividerBuilder
is shortcut to builder.modalDivider
,
a widget builder to customize divider widget between header, body, and footer modal.
The modalFooterBuilder
is shortcut to builder.modalFooter
,
a widget builder to customize footer widget.
The modalFilterBuilder
is shortcut to builder.modalFilter
,
a widget builder to customize filter widget.
The modalFilterToggleBuilder
is shortcut to builder.modalFilterToggle
,
a widget builder to customize filter toggle widget.
The choiceBuilder
is shortcut to builder.choice
,
a widget builder to customize each choice item widget.
The choiceTitleBuilder
is shortcut to builder.choiceTitle
,
a widget builder to customize each choice item title widget.
The choiceSubtitleBuilder
is shortcut to builder.choiceSubtitle
,
a widget builder to customize choice item subtitle widget.
The choiceSecondaryBuilder
is shortcut to builder.choiceSecondary
,
a widget builder to customize choice item secondary widget.
The choiceDividerBuilder
is shortcut to builder.choiceDivider
,
a widget builder to customize divider widget between choices item.
The choiceEmptyBuilder
is shortcut to builder.choiceEmpty
,
a widget builder to customize empty display widget.
The choiceGroupBuilder
is shortcut to builder.choiceGroup
,
a widget builder to customize choices group widget.
The choiceHeaderBuilder
is shortcut to builder.choiceHeader
,
a widget builder to customize header widget on grouped choices.
The choiceConfig
is a configuration to customize choice widget.
The choiceStyle
is shortcut to choiceConfig.style
,
a configuration for styling unselected choice widget.
The choiceActiveStyle
is shortcut to choiceConfig.activeStyle
,
a configuration for styling selected choice widget.
The choiceHeaderStyle
is shortcut to choiceConfig.headerStyle
,
a configuration for styling header widget of grouped choices.
The choiceType
is shortcut to choiceConfig.type
,
widget type to display the choice items.
The choiceLayout
is shortcut to choiceConfig.layout
,
layout to display the choice items.
The choiceDirection
is shortcut to choiceConfig.direction
,
scroll direction of the choice items,
currently only support when choiceLayout
or choiceConfig.layout
is S2ChoiceLayout.wrap.
The choiceGrouped
is shortcut to groupConfig.enabled
,
whether the choice items is grouped or not, based on S2Choice.group value.
The choiceDivider
is shortcut to choiceConfig.useDivider
,
whether the choice items use divider or not.
The choiceGrid
is shortcut to choiceConfig.gridDelegate
,
if choiceLayout
is S2ChoiceLayout.grid,
a delegate that controls the layout of the children within the GridView.
The choiceGridCount
is shortcut to choiceConfig.gridCount
,
if choiceLayout
is S2ChoiceLayout.grid,
the number of children in the cross axis, and ignored if choiceGrid
is defined,
The choiceGridSpacing
is shortcut to choiceConfig.gridSpacing
,
if choiceLayout
is S2ChoiceLayout.grid,
fill the crossAxisSpacing
and crossAxisSpacing
with single configuration,
and ignored if choiceGrid
is defined.
The choicePageLimit
is shortcut to choiceConfig.pageLimit
,
limit per page to display the choices, defaults to null
, it means disabled the paging.
The choiceDelay
is shortcut to choiceConfig.delay
,
time delay before display the choices.
The groupConfig
is a configuration to customize grouped widget.
The groupEnabled
is shortcut to groupConfig.enabled
, alterative to choiceGrouped
,
whether the choices list is grouped or not, based on S2Choice.group.
The groupSelector
is shortcut to groupConfig.useSelector
,
if groupEnabled
is true
, whether the group header displays the choices selector toggle or not.
The groupCounter
is shortcut to groupConfig.useCounter
,
if groupEnabled
is true
, whether the group header displays the choices counter or not.
The groupSortBy
is shortcut to groupConfig.sortBy
,
if groupEnabled
is true
, comparator function to sort the group keys,
and defaults to null
to disabled the sorting.
The groupHeaderStyle
is shortcut to groupConfig.headerStyle
,
if groupEnabled
is true
, configure choices group header theme.
Then modalConfig
is configuration to customize behavior of the choices modal.
The modalStyle
is shortcut to modalConfig.style
,
a configuration for styling modal widget.
The modalHeaderStyle
is shortcut to modalConfig.headerStyle
,
a configuration for styling header of the modal widget.
The modalType
is shortcut to modalConfig.type
,
modal type to display the choice items.
The modalTitle
is shortcut to modalConfig.title
,
used to override title
in the modal widget.
The modalConfirm
is shortcut to modalConfig.useConfirm
,
Whether the modal need to confirm before returning the changed value.
The modalHeader
is shortcut to modalConfig.useHeader
,
Whether the modal use header or not.
The modalFilter
is shortcut to modalConfig.useFilter
,
Whether the choice items in the modal is filterable or not.
The modalFilterAuto
shortcut to modalConfig.filterAuto
,
Whether the filter is autocomplete or need to confirm with filter button.
The modalFilterHint
is shortcut to modalConfig.filterHint
,
String to display as hint in searchbar.
Implementation
factory SmartSelect.multiple({
Key key,
String title,
String placeholder = 'Select one or more',
List<T> selectedValue,
List<S2Choice<T>> selectedChoice,
S2MultiSelectedResolver<T> selectedResolver,
ValueChanged<S2MultiSelected<T>> onChange,
S2ChoiceSelect<S2MultiState<T>, S2Choice<T>> onSelect,
S2ModalOpen<S2MultiState<T>> onModalOpen,
S2ModalClose<S2MultiState<T>> onModalClose,
S2ModalWillOpen<S2MultiState<T>> onModalWillOpen,
S2ModalWillClose<S2MultiState<T>> onModalWillClose,
S2Validation<S2MultiChosen<T>> validation,
S2Validation<S2MultiChosen<T>> modalValidation,
List<S2Choice<T>> choiceItems,
S2ChoiceLoader<T> choiceLoader,
S2MultiBuilder<T> builder,
S2WidgetBuilder<S2MultiState<T>> tileBuilder,
S2WidgetBuilder<S2MultiState<T>> modalBuilder,
S2WidgetBuilder<S2MultiState<T>> modalHeaderBuilder,
S2ListWidgetBuilder<S2MultiState<T>> modalActionsBuilder,
S2WidgetBuilder<S2MultiState<T>> modalConfirmBuilder,
S2WidgetBuilder<S2MultiState<T>> modalDividerBuilder,
S2WidgetBuilder<S2MultiState<T>> modalFooterBuilder,
S2WidgetBuilder<S2MultiState<T>> modalFilterBuilder,
S2WidgetBuilder<S2MultiState<T>> modalFilterToggleBuilder,
S2ComplexWidgetBuilder<S2MultiState<T>, S2Choice<T>> choiceBuilder,
S2ComplexWidgetBuilder<S2MultiState<T>, S2Choice<T>> choiceTitleBuilder,
S2ComplexWidgetBuilder<S2MultiState<T>, S2Choice<T>> choiceSubtitleBuilder,
S2ComplexWidgetBuilder<S2MultiState<T>, S2Choice<T>> choiceSecondaryBuilder,
IndexedWidgetBuilder choiceDividerBuilder,
S2WidgetBuilder<S2MultiState<T>> choiceEmptyBuilder,
S2ComplexWidgetBuilder<S2MultiState<T>, S2Group<T>> groupBuilder,
S2ComplexWidgetBuilder<S2MultiState<T>, S2Group<T>> groupHeaderBuilder,
S2ChoiceConfig choiceConfig,
S2ChoiceStyle choiceStyle,
S2ChoiceStyle choiceActiveStyle,
S2ChoiceType choiceType,
S2ChoiceLayout choiceLayout,
Axis choiceDirection,
bool choiceGrouped,
bool choiceDivider,
SliverGridDelegate choiceGrid,
int choiceGridCount,
double choiceGridSpacing,
int choicePageLimit,
Duration choiceDelay,
S2GroupConfig groupConfig,
bool groupEnabled,
bool groupSelector,
bool groupCounter,
S2GroupSort groupSortBy,
S2GroupHeaderStyle groupHeaderStyle,
S2ModalConfig modalConfig,
S2ModalStyle modalStyle,
S2ModalHeaderStyle modalHeaderStyle,
S2ModalType modalType,
String modalTitle,
bool modalConfirm,
bool modalHeader,
bool modalFilter,
bool modalFilterAuto,
String modalFilterHint,
}) {
S2ChoiceConfig defaultChoiceConfig = const S2ChoiceConfig(
type: S2ChoiceType.checkboxes,
);
S2ModalConfig defaultModalConfig = const S2ModalConfig();
S2GroupConfig defaultGroupConfig = const S2GroupConfig();
return SmartSelect<T>(
key: key,
title: title,
placeholder: placeholder,
choiceItems: choiceItems,
choiceLoader: choiceLoader,
isMultiChoice: true,
multiSelected: S2MultiSelected<T>(
value: selectedValue,
choice: selectedChoice,
resolver: selectedResolver,
validation: validation,
placeholder: placeholder,
),
multiOnChange: onChange,
multiOnSelect: onSelect,
multiOnModalOpen: onModalOpen,
multiOnModalClose: onModalClose,
multiOnModalWillOpen: onModalWillOpen,
multiOnModalWillClose: onModalWillClose,
multiValidation: validation,
multiModalValidation: modalValidation,
multiBuilder: S2MultiBuilder<T>().merge(builder).copyWith(
tile: tileBuilder,
modal: modalBuilder,
modalHeader: modalHeaderBuilder,
modalActions: modalActionsBuilder,
modalConfirm: modalConfirmBuilder,
modalDivider: modalDividerBuilder,
modalFooter: modalFooterBuilder,
modalFilter: modalFilterBuilder,
modalFilterToggle: modalFilterToggleBuilder,
choice: choiceBuilder,
choiceTitle: choiceTitleBuilder,
choiceSubtitle: choiceSubtitleBuilder,
choiceSecondary: choiceSecondaryBuilder,
choiceDivider: choiceDividerBuilder,
choiceEmpty: choiceEmptyBuilder,
group: groupBuilder,
groupHeader: groupHeaderBuilder,
),
choiceConfig: defaultChoiceConfig.merge(choiceConfig).copyWith(
type: choiceType,
layout: choiceLayout,
direction: choiceDirection,
gridDelegate: choiceGrid,
gridCount: choiceGridCount,
gridSpacing: choiceGridSpacing,
useDivider: choiceDivider,
style: choiceStyle,
activeStyle: choiceActiveStyle,
pageLimit: choicePageLimit,
delay: choiceDelay,
),
groupConfig: defaultGroupConfig.merge(groupConfig).copyWith(
enabled: groupEnabled ?? choiceGrouped,
useSelector: groupSelector,
useCounter: groupCounter,
sortBy: groupSortBy,
headerStyle: groupHeaderStyle,
),
modalConfig: defaultModalConfig.merge(modalConfig).copyWith(
type: modalType,
title: modalTitle,
filterHint: modalFilterHint,
filterAuto: modalFilterAuto,
useFilter: modalFilter,
useHeader: modalHeader,
useConfirm: modalConfirm,
style: modalStyle,
headerStyle: modalHeaderStyle,
),
);
}