Skip to content

Commit

Permalink
Fix #49: allow SmartSelect.single without an initial value
Browse files Browse the repository at this point in the history
  • Loading branch information
mauriziopinotti committed Oct 12, 2024
1 parent d341522 commit 2eed050
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 21 deletions.
4 changes: 2 additions & 2 deletions example/lib/features_brightness.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class _FeaturesBrightnessState extends State<FeaturesBrightness> {
selectedValue:
ThemePatrol.of(context)?.themeMode?.index ?? ThemeMode.system.index,
onChange: (selected) {
ThemePatrol.of(context)?.setMode(ThemeMode.values[selected.value]);
ThemePatrol.of(context)?.setMode(ThemeMode.values[selected.value!]);
},
modalType: S2ModalType.bottomSheet,
modalHeader: false,
Expand All @@ -47,7 +47,7 @@ class _FeaturesBrightnessState extends State<FeaturesBrightness> {
},
tileBuilder: (context, state) {
return IconButton(
icon: Icon(modes[state.selected.value].meta),
icon: Icon(modes[state.selected.value!].meta),
onPressed: state.showModal,
);
},
Expand Down
2 changes: 1 addition & 1 deletion example/lib/features_color.dart
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class _FeaturesColorState extends State<FeaturesColor> {
title: 'Color',
selectedValue: _themeColor,
onChange: (selected) {
setState(() => _themeColor = selected.value);
setState(() => _themeColor = selected.value!);
ThemePatrol.of(context)?.setColor(_themeColor);
},
choiceItems: colors,
Expand Down
2 changes: 1 addition & 1 deletion example/lib/features_theme.dart
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ class _FeaturesThemeState extends State<FeaturesTheme> {
title: 'Color',
selectedValue: _themeColor,
onChange: (selected) {
setState(() => _themeColor = selected.value);
setState(() => _themeColor = selected.value!);
ThemePatrol.of(context)?.setColor(_themeColor);
},
choiceItems: S2Choice.listFrom<Color, Color>(
Expand Down
10 changes: 5 additions & 5 deletions lib/src/widget/s2_single_state.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class S2SingleState<T> extends S2State<T> {
/// State of choice(s) selection in the modal
@override
S2SingleSelection<T>? selection;
S2SingleSelection<T?>? selection;

@override
void onChange() {
Expand Down Expand Up @@ -54,12 +54,12 @@ class S2SingleState<T> extends S2State<T> {
}

@override
S2Validation<S2SingleChosen<T>>? get validation {
S2Validation<S2SingleChosen<T?>>? get validation {
return widget.singleValidation;
}

@override
S2Validation<S2SingleChosen<T>>? get modalValidation {
S2Validation<S2SingleChosen<T?>>? get modalValidation {
return widget.singleModalValidation ?? validation;
}

Expand All @@ -77,7 +77,7 @@ class S2SingleState<T> extends S2State<T> {
@override
void resolveSelection() async {
// set the initial selection
selection = S2SingleSelection<T>(
selection = S2SingleSelection<T?>(
initial: selected.choice,
validation: modalValidation,
)
Expand Down Expand Up @@ -206,5 +206,5 @@ class S2SingleState<T> extends S2State<T> {
Widget? choiceSelector(List<S2Choice<T>>? values) => null;

@override
S2SingleSelected<T> get selected => widget.singleSelected!;
S2SingleSelected<T?> get selected => widget.singleSelected!;
}
4 changes: 2 additions & 2 deletions lib/src/widget/s2_state.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ import '../text_error.dart';
/// Smart Select State
abstract class S2State<T> extends State<SmartSelect<T>> {
/// State of the selected choice(s)
S2Selected<T> get selected;
S2Selected<T?> get selected;

/// State of choice(s) selection in the modal
covariant S2Selection<T>? selection;
covariant S2Selection<T?>? selection;

/// State of the choice items
S2Choices<T>? choices;
Expand Down
20 changes: 10 additions & 10 deletions lib/src/widget/smart_select.dart
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,16 @@ class SmartSelect<T> extends StatefulWidget {
final bool isMultiChoice;

/// Initial selected choice
final S2SingleSelected<T>? singleSelected;
final S2SingleSelected<T?>? singleSelected;

/// A function used to validate the selected choice
final S2Validation<S2SingleChosen<T>>? singleValidation;
final S2Validation<S2SingleChosen<T?>>? singleValidation;

/// Modal validation of single choice widget
final S2Validation<S2SingleChosen<T>>? singleModalValidation;
final S2Validation<S2SingleChosen<T?>>? singleModalValidation;

/// Called when value changed in single choice widget
final ValueChanged<S2SingleSelected<T>>? singleOnChange;
final ValueChanged<S2SingleSelected<T?>>? singleOnChange;

/// Called when selection has been made in single choice widget
final S2ChoiceSelect<S2SingleState<T>, S2Choice<T>>? singleOnSelect;
Expand Down Expand Up @@ -331,17 +331,17 @@ class SmartSelect<T> extends StatefulWidget {
Key? key,
String? title,
String placeholder = 'Select one',
required T selectedValue,
T? selectedValue,
S2Choice<T>? selectedChoice,
S2SingleSelectedResolver<T>? selectedResolver,
ValueChanged<S2SingleSelected<T>>? onChange,
S2SingleSelectedResolver<T?>? selectedResolver,
ValueChanged<S2SingleSelected<T?>>? onChange,
S2ChoiceSelect<S2SingleState<T>, S2Choice<T>>? onSelect,
S2ModalOpen<S2SingleState<T>>? onModalOpen,
S2ModalClose<S2SingleState<T>>? onModalClose,
S2ModalWillOpen<S2SingleState<T>>? onModalWillOpen,
S2ModalWillClose<S2SingleState<T>>? onModalWillClose,
S2Validation<S2SingleChosen<T>>? validation,
S2Validation<S2SingleChosen<T>>? modalValidation,
S2Validation<S2SingleChosen<T?>>? validation,
S2Validation<S2SingleChosen<T?>>? modalValidation,
List<S2Choice<T>>? choiceItems,
S2ChoiceLoader<T>? choiceLoader,
S2SingleBuilder<T>? builder,
Expand Down Expand Up @@ -406,7 +406,7 @@ class SmartSelect<T> extends StatefulWidget {
choiceItems: choiceItems,
choiceLoader: choiceLoader,
isMultiChoice: false,
singleSelected: S2SingleSelected<T>(
singleSelected: S2SingleSelected<T?>(
value: selectedValue,
choice: selectedChoice,
resolver: selectedResolver,
Expand Down

0 comments on commit 2eed050

Please sign in to comment.