Files
astromic_elements/lib/src/Selectors/selectors.astromic.dart

80 lines
2.4 KiB
Dart

//s2 Core Packages Imports
import 'package:flutter/widgets.dart';
import 'src/Radio/radio.selector.dart';
import 'src/Chip/chip.selector.dart';
import 'src/Radio/configuration.dart';
import 'src/Chip/configuration.dart';
//
export 'src/Radio/configuration.dart';
export 'src/Chip/configuration.dart';
class AstromicSelectors {
//S1 -- Radio
static Widget radio<T>({
T? initialSelectedValue,
Function(T selectedItem)? onChanged,
//
AstromicRadioSelectorConfiguration? configurations,
//
double? itemSpacing = 4,
//
required Widget Function(T item, bool isEnabled, bool isSelected, VoidCallback? onTap) itemBuilder,
required List<(T item, bool isEnabled)> items,
}) =>
AstromicRadioSelector<T>(
initialSelectedValue: initialSelectedValue,
onChanged: onChanged,
//
configuration: configurations ?? const AstromicRadioSelectorConfiguration(),
//
itemSpacing: itemSpacing ?? 8.0,
//
itemBuilder: itemBuilder,
items: items,
);
//S1 -- Chip
static Widget chip<T>({
List<T>? initialSelectedValues,
void Function(List<T> selectedItems)? onChanged,
//
AstromicChipSelectorConfiguration? configuration,
bool isCustom = false,
//
double? itemSpacing = 4,
double? runSpacing = 8,
//
required List<(T item, bool isEnabled)> items,
required Widget Function(T item, bool isEnabled, bool isSelected, VoidCallback? onTap, VoidCallback? onClearTapped) itemBuilder,
Widget Function(List<Widget> items)? groupBuilder,
}) {
assert(
(!isCustom || groupBuilder != null),
"You have to provide the group builder in a custom constructor.",
);
return isCustom
? AstromicChipSelector.custom(
initialSelectedValues: initialSelectedValues,
onChanged: onChanged,
//
configuration: configuration,
//
items: items,
itemBuilder: itemBuilder,
groupBuilder: groupBuilder!,
)
: AstromicChipSelector(
initialSelectedValues: initialSelectedValues,
onChanged: onChanged,
//
configuration: configuration,
//
itemSpacing: itemSpacing,
runSpacing: runSpacing,
//
items: items,
itemBuilder: itemBuilder,
);
}
}