SmartSelect<T> constructor

SmartSelect<T>({
  1. Key key,
  2. String title,
  3. String placeholder,
  4. bool isMultiChoice,
  5. S2SingleSelected<T> singleSelected,
  6. S2Validation<S2SingleChosen<T>> singleValidation,
  7. S2Validation<S2SingleChosen<T>> singleModalValidation,
  8. ValueChanged<S2SingleSelected<T>> singleOnChange,
  9. S2ChoiceSelect<S2SingleState<T>, S2Choice<T>> singleOnSelect,
  10. S2ModalOpen<S2SingleState<T>> singleOnModalOpen,
  11. S2ModalClose<S2SingleState<T>> singleOnModalClose,
  12. S2ModalWillOpen<S2SingleState<T>> singleOnModalWillOpen,
  13. S2ModalWillClose<S2SingleState<T>> singleOnModalWillClose,
  14. S2SingleBuilder<T> singleBuilder,
  15. S2MultiSelected<T> multiSelected,
  16. S2Validation<S2MultiChosen<T>> multiValidation,
  17. S2Validation<S2MultiChosen<T>> multiModalValidation,
  18. ValueChanged<S2MultiSelected<T>> multiOnChange,
  19. S2ChoiceSelect<S2MultiState<T>, S2Choice<T>> multiOnSelect,
  20. S2ModalOpen<S2MultiState<T>> multiOnModalOpen,
  21. S2ModalClose<S2MultiState<T>> multiOnModalClose,
  22. S2ModalWillOpen<S2MultiState<T>> multiOnModalWillOpen,
  23. S2ModalWillClose<S2MultiState<T>> multiOnModalWillClose,
  24. S2MultiBuilder<T> multiBuilder,
  25. S2ModalConfig modalConfig = const S2ModalConfig(),
  26. S2ChoiceConfig choiceConfig = const S2ChoiceConfig(),
  27. S2GroupConfig groupConfig = const S2GroupConfig(),
  28. List<S2Choice<T>> choiceItems,
  29. S2ChoiceLoader<T> choiceLoader,
})

Default constructor

Implementation

SmartSelect({
  Key key,
  this.title,
  this.placeholder,
  this.isMultiChoice,
  this.singleSelected,
  this.singleValidation,
  this.singleModalValidation,
  this.singleOnChange,
  this.singleOnSelect,
  this.singleOnModalOpen,
  this.singleOnModalClose,
  this.singleOnModalWillOpen,
  this.singleOnModalWillClose,
  this.singleBuilder,
  this.multiSelected,
  this.multiValidation,
  this.multiModalValidation,
  this.multiOnChange,
  this.multiOnSelect,
  this.multiOnModalOpen,
  this.multiOnModalClose,
  this.multiOnModalWillOpen,
  this.multiOnModalWillClose,
  this.multiBuilder,
  this.modalConfig = const S2ModalConfig(),
  this.choiceConfig = const S2ChoiceConfig(),
  this.groupConfig = const S2GroupConfig(),
  this.choiceItems,
  this.choiceLoader,
})  : assert(isMultiChoice != null),
      assert(
        title != null || modalConfig?.title != null,
        'title and modalConfig.title must not be both null',
      ),
      assert(
        (isMultiChoice && multiOnChange != null && multiBuilder != null) ||
            (!isMultiChoice &&
                singleOnChange != null &&
                singleBuilder != null),
        isMultiChoice
            ? 'multiValue, multiOnChange, and multiBuilder must be not null in multiple choice'
            : 'singleValue, singleOnChange, and singleBuilder must be not null in single choice',
      ),
      assert(
        (isMultiChoice && choiceConfig.type != S2ChoiceType.radios) ||
            (!isMultiChoice && choiceConfig.type != S2ChoiceType.checkboxes),
        isMultiChoice
            ? 'multiple choice can\'t use S2ChoiceType.radios'
            : 'Single choice can\'t use S2ChoiceType.checkboxes',
      ),
      assert(
        choiceItems != null || choiceLoader != null,
        '`choiceItems` and `choiceLoader` can\'t be both null',
      ),
      super(key: key);