[FIX] Fixed disabled items status in chip selector
This commit is contained in:
@@ -180,16 +180,16 @@ class _AstromicChipSelectorState<T> extends State<AstromicChipSelector<T>> {
|
|||||||
AstromicChipSelectorConfiguration configuration = widget.configuration ?? const AstromicChipSelectorConfiguration();
|
AstromicChipSelectorConfiguration configuration = widget.configuration ?? const AstromicChipSelectorConfiguration();
|
||||||
//
|
//
|
||||||
int currentIndex = widget.items.indexOf(currentItem);
|
int currentIndex = widget.items.indexOf(currentItem);
|
||||||
T? previousItem = currentIndex == 0 ? null : widget.items[widget.items.indexOf(currentItem) - 1].$1;
|
(T item, bool isEnabled)? previousItem = currentIndex == 0 ? null : widget.items[widget.items.indexOf(currentItem) - 1];
|
||||||
T? nextItem = currentIndex == widget.items.length - 1 ? null : widget.items[widget.items.indexOf(currentItem) + 1].$1;
|
(T item, bool isEnabled)? nextItem = currentIndex == widget.items.length - 1 ? null : widget.items[widget.items.indexOf(currentItem) + 1];
|
||||||
bool isConsequent = configuration.isConsequent;
|
bool isConsequent = configuration.isConsequent;
|
||||||
//
|
//
|
||||||
bool isEnabled = currentItem.$2;
|
bool isEnabled = currentItem.$2;
|
||||||
bool isSelected = selectedItems.contains(currentItem.$1);
|
bool isSelected = selectedItems.contains(currentItem.$1);
|
||||||
bool isPreviousItemSelected = selectedItems.contains(previousItem);
|
bool isPreviousItemSelected = selectedItems.contains(previousItem?.$1);
|
||||||
bool isPreviousItemDisabled = currentIndex == 0 ? false : !widget.items[widget.items.indexOf(currentItem) - 1].$2;
|
bool isPreviousItemDisabled = !(previousItem?.$2 ?? false);
|
||||||
bool isNextItemSelected = selectedItems.contains(nextItem);
|
bool isNextItemSelected = selectedItems.contains(nextItem?.$1);
|
||||||
bool isNextItemDisabled = currentIndex == widget.items.length - 1 ? false : !widget.items[widget.items.indexOf(currentItem) + 1].$2;
|
bool isNextItemDisabled = !(nextItem?.$2 ?? false);
|
||||||
// ---
|
// ---
|
||||||
bool canBeSelected =
|
bool canBeSelected =
|
||||||
(isConsequent && isEnabled && !isSelected && selectedItems.length < (configuration.maxSelectedItems) && (isPreviousItemSelected || currentIndex == 0 || isPreviousItemDisabled)) ||
|
(isConsequent && isEnabled && !isSelected && selectedItems.length < (configuration.maxSelectedItems) && (isPreviousItemSelected || currentIndex == 0 || isPreviousItemDisabled)) ||
|
||||||
@@ -202,6 +202,9 @@ class _AstromicChipSelectorState<T> extends State<AstromicChipSelector<T>> {
|
|||||||
bool canShowClear = configuration.withClearButton && canbeUnselected;
|
bool canShowClear = configuration.withClearButton && canbeUnselected;
|
||||||
// ---
|
// ---
|
||||||
//
|
//
|
||||||
|
debugPrint(
|
||||||
|
'item: ${currentItem.$1}, isEnabled: ${currentItem.$2}, canBeSelected: $canBeSelected, canBeUnselected: $canbeUnselected, previous disabled: $isPreviousItemDisabled, next disabled: $isNextItemDisabled');
|
||||||
|
//
|
||||||
return widget.itemBuilder(
|
return widget.itemBuilder(
|
||||||
currentItem.$1,
|
currentItem.$1,
|
||||||
isEnabled,
|
isEnabled,
|
||||||
|
|||||||
Reference in New Issue
Block a user