80 lines
2.4 KiB
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,
|
|
);
|
|
}
|
|
}
|