[0.1.0]
This commit is contained in:
@@ -45,7 +45,7 @@ class AstromicSelectors {
|
||||
required Widget Function(T item, bool isEnabled, bool isSelected, VoidCallback? onTap, VoidCallback? onClearTapped) itemBuilder,
|
||||
Widget Function(List<Widget> items)? groupBuilder,
|
||||
}) =>
|
||||
AstromicChipSelector(
|
||||
AstromicChipSelector<T>(
|
||||
initialSelectedValues: initialSelectedValues,
|
||||
onChanged: onChanged,
|
||||
configuration: configuration,
|
||||
@@ -53,6 +53,6 @@ class AstromicSelectors {
|
||||
runSpacing: runSpacing,
|
||||
items: items,
|
||||
itemBuilder: itemBuilder,
|
||||
groupBuilder: groupBuilder!,
|
||||
groupBuilder: groupBuilder,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -13,20 +13,6 @@ import 'models/models.exports.dart';
|
||||
|
||||
/// Selector that allows multible items to be selected from a group of items with the option to unselect and clear.
|
||||
class AstromicChipSelector<T> extends StatefulWidget {
|
||||
//SECTION - Widget Arguments
|
||||
//s1 -- Functionality
|
||||
final List<T>? initialSelectedValues;
|
||||
final Function(List<T> selectedItems)? onChanged;
|
||||
//s1 -- Configuration
|
||||
final AstromicChipSelectorConfiguration? configuration;
|
||||
//s1 -- Style
|
||||
final double? itemSpacing;
|
||||
final double? runSpacing;
|
||||
//
|
||||
//s1 -- Content
|
||||
final List<(T item, bool isEnabled)> items;
|
||||
final Widget Function(T item, bool isEnabled, bool isSelected, VoidCallback? onTap, VoidCallback? onClearTapped) itemBuilder;
|
||||
final Widget Function(List<Widget> items)? groupBuilder;
|
||||
//!SECTION
|
||||
//
|
||||
AstromicChipSelector({
|
||||
@@ -44,12 +30,26 @@ class AstromicChipSelector<T> extends StatefulWidget {
|
||||
required this.itemBuilder,
|
||||
this.groupBuilder,
|
||||
}) : assert(
|
||||
(configuration?.isNullable ?? true) || (initialSelectedValues != null && items.map((i) => i.$1).toList().containsAll(initialSelectedValues)),
|
||||
"Initial values are not all present in the items!",
|
||||
(configuration?.isNullable ?? true) || (initialSelectedValues != null && items.map(((T, bool) i) => i.$1).toList().containsAll(initialSelectedValues)),
|
||||
'Initial values are not all present in the items!',
|
||||
),
|
||||
super(
|
||||
key: key,
|
||||
);
|
||||
//SECTION - Widget Arguments
|
||||
//s1 -- Functionality
|
||||
final List<T>? initialSelectedValues;
|
||||
final Function(List<T> selectedItems)? onChanged;
|
||||
//s1 -- Configuration
|
||||
final AstromicChipSelectorConfiguration? configuration;
|
||||
//s1 -- Style
|
||||
final double? itemSpacing;
|
||||
final double? runSpacing;
|
||||
//
|
||||
//s1 -- Content
|
||||
final List<(T item, bool isEnabled)> items;
|
||||
final Widget Function(T item, bool isEnabled, bool isSelected, VoidCallback? onTap, VoidCallback? onClearTapped) itemBuilder;
|
||||
final Widget Function(List<Widget> items)? groupBuilder;
|
||||
|
||||
@override
|
||||
State<AstromicChipSelector<T>> createState() => _AstromicChipSelectorState<T>();
|
||||
@@ -80,7 +80,7 @@ class _AstromicChipSelectorState<T> extends State<AstromicChipSelector<T>> {
|
||||
//s1 --Controllers & Listeners
|
||||
//
|
||||
//s1 --State
|
||||
selectedItems = widget.initialSelectedValues ?? [];
|
||||
selectedItems = widget.initialSelectedValues ?? <T>[];
|
||||
//s1 --State
|
||||
//
|
||||
//s1 --Late & Async Initializers
|
||||
@@ -126,7 +126,7 @@ class _AstromicChipSelectorState<T> extends State<AstromicChipSelector<T>> {
|
||||
//s1 -Values
|
||||
//
|
||||
//s1 -Widgets
|
||||
List<Widget> baseChildren = widget.items.map((currentItem) {
|
||||
List<Widget> baseChildren = widget.items.map(((T, bool) currentItem) {
|
||||
//
|
||||
AstromicChipSelectorConfiguration configuration = widget.configuration ?? const AstromicChipSelectorConfiguration();
|
||||
//
|
||||
|
||||
@@ -3,15 +3,6 @@ import 'package:flutter/widgets.dart';
|
||||
/// Configuration model for the chip selector element.
|
||||
|
||||
class AstromicChipSelectorConfiguration {
|
||||
final bool isNullable;
|
||||
final bool isWrap;
|
||||
final WrapAlignment wrapMainAllignment;
|
||||
final WrapCrossAlignment wrapCrossAllignment;
|
||||
final bool isConsequent;
|
||||
final bool withClearButton;
|
||||
final int maxSelectedItems;
|
||||
final int crossAxisCount;
|
||||
final double? fixedRowHeight;
|
||||
const AstromicChipSelectorConfiguration({
|
||||
this.isNullable = true,
|
||||
//
|
||||
@@ -24,6 +15,15 @@ class AstromicChipSelectorConfiguration {
|
||||
this.crossAxisCount = 3,
|
||||
this.fixedRowHeight,
|
||||
});
|
||||
final bool isNullable;
|
||||
final bool isWrap;
|
||||
final WrapAlignment wrapMainAllignment;
|
||||
final WrapCrossAlignment wrapCrossAllignment;
|
||||
final bool isConsequent;
|
||||
final bool withClearButton;
|
||||
final int maxSelectedItems;
|
||||
final int crossAxisCount;
|
||||
final double? fixedRowHeight;
|
||||
|
||||
AstromicChipSelectorConfiguration copyWith({
|
||||
bool? isNullable,
|
||||
|
||||
@@ -2,12 +2,6 @@ import 'package:flutter/widgets.dart';
|
||||
|
||||
/// Configuration model for the radio selector element.
|
||||
class AstromicRadioSelectorConfiguration {
|
||||
final Axis axis;
|
||||
final bool isNullable;
|
||||
//
|
||||
final MainAxisAlignment? mainAxisAlignment;
|
||||
final MainAxisSize? mainAxisSize;
|
||||
final CrossAxisAlignment? crossAxisAlignment;
|
||||
const AstromicRadioSelectorConfiguration({
|
||||
this.axis = Axis.horizontal,
|
||||
this.isNullable = true,
|
||||
@@ -16,6 +10,12 @@ class AstromicRadioSelectorConfiguration {
|
||||
this.mainAxisSize,
|
||||
this.crossAxisAlignment,
|
||||
});
|
||||
final Axis axis;
|
||||
final bool isNullable;
|
||||
//
|
||||
final MainAxisAlignment? mainAxisAlignment;
|
||||
final MainAxisSize? mainAxisSize;
|
||||
final CrossAxisAlignment? crossAxisAlignment;
|
||||
|
||||
AstromicRadioSelectorConfiguration copyWith({
|
||||
Axis? axis,
|
||||
|
||||
@@ -12,17 +12,6 @@ import 'models/models.exports.dart';
|
||||
|
||||
/// Selector that allows only one item to be selected from a group of items.
|
||||
class AstromicRadioSelector<T> extends StatefulWidget {
|
||||
//SECTION - Widget Arguments
|
||||
//s1 -- Functionality
|
||||
final T? initialSelectedValue;
|
||||
final Function(T selectedItem)? onChanged;
|
||||
//s1 -- Configuration
|
||||
final AstromicRadioSelectorConfiguration? configuration;
|
||||
//s1 -- Style
|
||||
final double? itemSpacing;
|
||||
//s1 -- Content
|
||||
final List<(T item, bool isEnabled)> items;
|
||||
final Widget Function(T item, bool isEnabled, bool isSelected, VoidCallback? onTap) itemBuilder;
|
||||
//!SECTION
|
||||
//
|
||||
AstromicRadioSelector({
|
||||
@@ -42,16 +31,27 @@ class AstromicRadioSelector<T> extends StatefulWidget {
|
||||
configuration!.isNullable ||
|
||||
(items
|
||||
.map(
|
||||
(e) => e.$1,
|
||||
((T, bool) e) => e.$1,
|
||||
)
|
||||
.toList()
|
||||
.contains(initialSelectedValue) &&
|
||||
items.where((e) => e.$1 == initialSelectedValue).first.$2),
|
||||
"Initial value is not present in the items or is not enabled!",
|
||||
items.where(((T, bool) e) => e.$1 == initialSelectedValue).first.$2),
|
||||
'Initial value is not present in the items or is not enabled!',
|
||||
),
|
||||
super(
|
||||
key: key,
|
||||
);
|
||||
//SECTION - Widget Arguments
|
||||
//s1 -- Functionality
|
||||
final T? initialSelectedValue;
|
||||
final Function(T selectedItem)? onChanged;
|
||||
//s1 -- Configuration
|
||||
final AstromicRadioSelectorConfiguration? configuration;
|
||||
//s1 -- Style
|
||||
final double? itemSpacing;
|
||||
//s1 -- Content
|
||||
final List<(T item, bool isEnabled)> items;
|
||||
final Widget Function(T item, bool isEnabled, bool isSelected, VoidCallback? onTap) itemBuilder;
|
||||
|
||||
@override
|
||||
State<AstromicRadioSelector<T>> createState() => _AstromicRadioSelectorState<T>();
|
||||
@@ -116,7 +116,7 @@ class _AstromicRadioSelectorState<T> extends State<AstromicRadioSelector<T>> {
|
||||
//s1 -Values
|
||||
//
|
||||
//s1 -Widgets
|
||||
List<Widget> baseChildren = widget.items.map((currentItem) {
|
||||
List<Widget> baseChildren = widget.items.map(((T, bool) currentItem) {
|
||||
T item = currentItem.$1;
|
||||
bool isEnabled = currentItem.$2;
|
||||
bool isSelected = item == selectedItem;
|
||||
|
||||
Reference in New Issue
Block a user