[DEV] Fused disabled item builder to the item builder.
This commit is contained in:
@@ -14,8 +14,7 @@ class AstromicSelectors {
|
|||||||
//
|
//
|
||||||
double? itemSpacing = 4,
|
double? itemSpacing = 4,
|
||||||
//
|
//
|
||||||
required Widget Function(T item, {VoidCallback? onTap, bool isSelected}) itemBuilder,
|
required Widget Function(T item, bool isEnabled, bool isSelected, VoidCallback? onTap) itemBuilder,
|
||||||
Widget Function(T item)? disabledItemBuilder,
|
|
||||||
required List<(T item, bool isEnabled)> items,
|
required List<(T item, bool isEnabled)> items,
|
||||||
}) =>
|
}) =>
|
||||||
AstromicRadioSelector<T>(
|
AstromicRadioSelector<T>(
|
||||||
@@ -27,7 +26,6 @@ class AstromicSelectors {
|
|||||||
itemSpacing: itemSpacing ?? 8.0,
|
itemSpacing: itemSpacing ?? 8.0,
|
||||||
//
|
//
|
||||||
itemBuilder: itemBuilder,
|
itemBuilder: itemBuilder,
|
||||||
disabledItemBuilder: disabledItemBuilder,
|
|
||||||
items: items,
|
items: items,
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -41,15 +39,9 @@ class AstromicSelectors {
|
|||||||
//
|
//
|
||||||
double? itemSpacing = 4,
|
double? itemSpacing = 4,
|
||||||
double? runSpacing = 8,
|
double? runSpacing = 8,
|
||||||
double? clearSpacing = 4,
|
|
||||||
//
|
|
||||||
TextStyle? labelStyle,
|
|
||||||
TextStyle? selectedLabelStyle,
|
|
||||||
TextStyle? disabledLabelStyle,
|
|
||||||
//
|
//
|
||||||
required List<(T item, bool isEnabled)> items,
|
required List<(T item, bool isEnabled)> items,
|
||||||
required Widget Function(T item, {bool isSelected, VoidCallback? onTap, VoidCallback? onClearTapped}) itemBuilder,
|
required Widget Function(T item, bool isEnabled, bool isSelected, VoidCallback? onTap, VoidCallback? onClearTapped) itemBuilder,
|
||||||
required Widget Function(T item) disabledItemBuilder,
|
|
||||||
Widget Function(List<Widget> items)? groupBuilder,
|
Widget Function(List<Widget> items)? groupBuilder,
|
||||||
}) {
|
}) {
|
||||||
assert(
|
assert(
|
||||||
@@ -65,7 +57,6 @@ class AstromicSelectors {
|
|||||||
//
|
//
|
||||||
items: items,
|
items: items,
|
||||||
itemBuilder: itemBuilder,
|
itemBuilder: itemBuilder,
|
||||||
disabledItemBuilder: disabledItemBuilder,
|
|
||||||
groupBuilder: groupBuilder!,
|
groupBuilder: groupBuilder!,
|
||||||
)
|
)
|
||||||
: AstromicChipSelector(
|
: AstromicChipSelector(
|
||||||
@@ -79,7 +70,6 @@ class AstromicSelectors {
|
|||||||
//
|
//
|
||||||
items: items,
|
items: items,
|
||||||
itemBuilder: itemBuilder,
|
itemBuilder: itemBuilder,
|
||||||
disabledItemBuilder: disabledItemBuilder,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,8 +34,7 @@ class AstromicChipSelector<T> extends StatefulWidget {
|
|||||||
//s1 -- Content
|
//s1 -- Content
|
||||||
final List<(T item, bool isEnabled)> items;
|
final List<(T item, bool isEnabled)> items;
|
||||||
//
|
//
|
||||||
final Widget Function(T item, {bool isSelected, VoidCallback? onTap, VoidCallback? onClearTapped}) itemBuilder;
|
final Widget Function(T item, bool isEnabled, bool isSelected, VoidCallback? onTap, VoidCallback? onClearTapped) itemBuilder;
|
||||||
final Widget Function(T item) disabledItemBuilder;
|
|
||||||
final Widget Function(List<Widget> items)? groupBuilder;
|
final Widget Function(List<Widget> items)? groupBuilder;
|
||||||
//!SECTION
|
//!SECTION
|
||||||
//
|
//
|
||||||
@@ -53,7 +52,6 @@ class AstromicChipSelector<T> extends StatefulWidget {
|
|||||||
//s1 -- Content
|
//s1 -- Content
|
||||||
required this.items,
|
required this.items,
|
||||||
required this.itemBuilder,
|
required this.itemBuilder,
|
||||||
required this.disabledItemBuilder,
|
|
||||||
this.groupBuilder,
|
this.groupBuilder,
|
||||||
}) : assert(
|
}) : assert(
|
||||||
(configuration?.isNullable ?? true) || (initialSelectedValues != null && items.map((i) => i.$1).toList().containsAll(initialSelectedValues)),
|
(configuration?.isNullable ?? true) || (initialSelectedValues != null && items.map((i) => i.$1).toList().containsAll(initialSelectedValues)),
|
||||||
@@ -77,8 +75,7 @@ class AstromicChipSelector<T> extends StatefulWidget {
|
|||||||
//s1 -- Content
|
//s1 -- Content
|
||||||
required final List<(T item, bool isEnabled)> items,
|
required final List<(T item, bool isEnabled)> items,
|
||||||
//
|
//
|
||||||
required final Widget Function(T item, {bool isSelected, VoidCallback? onTap, VoidCallback? onClearTapped}) itemBuilder,
|
required final Widget Function(T item, bool isEnabled, bool isSelected, VoidCallback? onTap, VoidCallback? onClearTapped) itemBuilder,
|
||||||
required final Widget Function(T item) disabledItemBuilder,
|
|
||||||
required final Widget Function(List<Widget> items) groupBuilder,
|
required final Widget Function(List<Widget> items) groupBuilder,
|
||||||
}) {
|
}) {
|
||||||
assert((configuration?.isNullable ?? true) || (initialSelectedValues != null && items.map((i) => i.$1).toList().containsAll(initialSelectedValues)),
|
assert((configuration?.isNullable ?? true) || (initialSelectedValues != null && items.map((i) => i.$1).toList().containsAll(initialSelectedValues)),
|
||||||
@@ -96,7 +93,6 @@ class AstromicChipSelector<T> extends StatefulWidget {
|
|||||||
//
|
//
|
||||||
items: items,
|
items: items,
|
||||||
itemBuilder: itemBuilder,
|
itemBuilder: itemBuilder,
|
||||||
disabledItemBuilder: disabledItemBuilder,
|
|
||||||
groupBuilder: groupBuilder,
|
groupBuilder: groupBuilder,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -201,14 +197,13 @@ class _AstromicChipSelectorState<T> extends State<AstromicChipSelector<T>> {
|
|||||||
bool canShowClear = _configuration.withClearButton && canbeUnselected;
|
bool canShowClear = _configuration.withClearButton && canbeUnselected;
|
||||||
// ---
|
// ---
|
||||||
//
|
//
|
||||||
return isEnabled
|
return widget.itemBuilder(
|
||||||
? widget.itemBuilder(
|
|
||||||
currentItem.$1,
|
currentItem.$1,
|
||||||
isSelected: isSelected,
|
isEnabled,
|
||||||
onTap: tapable ? () => _onTap(currentItem.$1) : null,
|
isSelected,
|
||||||
onClearTapped: canShowClear ? _onTapClear(currentItem.$1) : null,
|
tapable ? () => _onTap(currentItem.$1) : null,
|
||||||
)
|
canShowClear ? _onTapClear(currentItem.$1) : null,
|
||||||
: widget.disabledItemBuilder(currentItem.$1);
|
);
|
||||||
}).toList();
|
}).toList();
|
||||||
//s1 -Widgets
|
//s1 -Widgets
|
||||||
//!SECTION
|
//!SECTION
|
||||||
|
|||||||
@@ -32,8 +32,7 @@ class AstromicRadioSelector<T> extends StatefulWidget {
|
|||||||
//s1 -- Content
|
//s1 -- Content
|
||||||
final List<(T item, bool isEnabled)> items;
|
final List<(T item, bool isEnabled)> items;
|
||||||
//
|
//
|
||||||
final Widget Function(T item, {VoidCallback? onTap, bool isSelected}) itemBuilder;
|
final Widget Function(T item, bool isEnabled, bool isSelected, VoidCallback? onTap) itemBuilder;
|
||||||
final Widget Function(T item)? disabledItemBuilder;
|
|
||||||
//!SECTION
|
//!SECTION
|
||||||
//
|
//
|
||||||
AstromicRadioSelector({
|
AstromicRadioSelector({
|
||||||
@@ -48,7 +47,6 @@ class AstromicRadioSelector<T> extends StatefulWidget {
|
|||||||
required this.itemSpacing,
|
required this.itemSpacing,
|
||||||
//s1 -- Content
|
//s1 -- Content
|
||||||
required this.itemBuilder,
|
required this.itemBuilder,
|
||||||
this.disabledItemBuilder,
|
|
||||||
}) : assert(configuration.isNullable || initialSelectedValue != null, 'You need to supply an initial value if not nullable!'),
|
}) : assert(configuration.isNullable || initialSelectedValue != null, 'You need to supply an initial value if not nullable!'),
|
||||||
assert(
|
assert(
|
||||||
configuration.isNullable ||
|
configuration.isNullable ||
|
||||||
@@ -131,16 +129,13 @@ class _AstromicRadioSelectorState<T> extends State<AstromicRadioSelector<T>> {
|
|||||||
//
|
//
|
||||||
//s1 -Widgets
|
//s1 -Widgets
|
||||||
List<Widget> baseChildren = widget.items.map((currentItem) {
|
List<Widget> baseChildren = widget.items.map((currentItem) {
|
||||||
|
T item = currentItem.$1;
|
||||||
bool isEnabled = currentItem.$2;
|
bool isEnabled = currentItem.$2;
|
||||||
bool isSelected = currentItem.$1 == selectedItem;
|
bool isSelected = item == selectedItem;
|
||||||
//
|
//
|
||||||
return !isEnabled && widget.disabledItemBuilder != null
|
return widget.configuration.withExpandedSpace && widget.configuration.axis == Axis.horizontal
|
||||||
? widget.configuration.withExpandedSpace && widget.configuration.axis == Axis.horizontal
|
? Expanded(child: widget.itemBuilder(item, isEnabled, isSelected, isEnabled ? () => _onTap(item) : null))
|
||||||
? Expanded(child: widget.disabledItemBuilder!(currentItem.$1))
|
: widget.itemBuilder(item, isEnabled, isSelected, isEnabled ? () => _onTap(item) : null);
|
||||||
: widget.disabledItemBuilder!(currentItem.$1)
|
|
||||||
: widget.configuration.withExpandedSpace && widget.configuration.axis == Axis.horizontal
|
|
||||||
? Expanded(child: widget.itemBuilder(currentItem.$1, onTap: isEnabled ? () => _onTap(currentItem.$1) : null, isSelected: isSelected))
|
|
||||||
: widget.itemBuilder(currentItem.$1, onTap: isEnabled ? () => _onTap(currentItem.$1) : null, isSelected: isSelected);
|
|
||||||
}).toList();
|
}).toList();
|
||||||
//s1 -Widgets
|
//s1 -Widgets
|
||||||
//!SECTION
|
//!SECTION
|
||||||
|
|||||||
Reference in New Issue
Block a user