diff --git a/lib/src/Selectors/src/Chip/chip.selector.dart b/lib/src/Selectors/src/Chip/chip.selector.dart index 7a2be04..ff41ddb 100644 --- a/lib/src/Selectors/src/Chip/chip.selector.dart +++ b/lib/src/Selectors/src/Chip/chip.selector.dart @@ -187,11 +187,15 @@ class _AstromicChipSelectorState extends State> { bool isEnabled = currentItem.$2; bool isSelected = selectedItems.contains(currentItem.$1); bool isPreviousItemSelected = selectedItems.contains(previousItem); + bool isPreviousItemDisabled = currentIndex == 0 ? false : !widget.items[widget.items.indexOf(currentItem) - 1].$2; bool isNextItemSelected = selectedItems.contains(nextItem); + bool isNextItemDisabled = currentIndex == widget.items.length - 1 ? false : !widget.items[widget.items.indexOf(currentItem) + 1].$2; // --- - bool canBeSelected = (isConsequent && isEnabled && !isSelected && selectedItems.length < (configuration.maxSelectedItems) && (isPreviousItemSelected || currentIndex == 0)) || - (!isConsequent && isEnabled && !isSelected && selectedItems.length < (configuration.maxSelectedItems)); - bool canbeUnselected = (isConsequent && isEnabled && isSelected && (!isNextItemSelected || currentIndex == widget.items.length - 1)) || (!isConsequent && isEnabled && isSelected); + bool canBeSelected = + (isConsequent && isEnabled && !isSelected && selectedItems.length < (configuration.maxSelectedItems) && (isPreviousItemSelected || currentIndex == 0 || isPreviousItemDisabled)) || + (!isConsequent && isEnabled && !isSelected && selectedItems.length < (configuration.maxSelectedItems)); + bool canbeUnselected = + (isConsequent && isEnabled && isSelected && (!isNextItemSelected || isNextItemDisabled || currentIndex == widget.items.length - 1)) || (!isConsequent && isEnabled && isSelected); // --- bool tapable = (isSelected && canbeUnselected) || (!isSelected && canBeSelected); // ---