TKeyValue.chips constructor

TKeyValue.chips(
  1. String key,
  2. List items, {
  3. Color? color,
  4. Color? colorBuilder(
    1. String chipText
    )?,
  5. dynamic chipIcon,
  6. dynamic iconBuilder(
    1. String chipText
    )?,
  7. TVariant? type,
  8. TVariant? typeBuilder(
    1. String chipText
    )?,
  9. TSize size = TChipSize.sm,
  10. double spacing = 4.0,
  11. double runSpacing = 4.0,
  12. WrapCrossAlignment crossAxisAlignment = WrapCrossAlignment.center,
  13. WrapAlignment wrapAlignment = WrapAlignment.start,
  14. void onTap(
    1. String chipText
    )?,
  15. Widget? icon,
  16. double? width,
  17. Alignment? alignment,
  18. double? minWidth,
  19. double? maxWidth,
})

Creates a key-value item for displaying multiple chips in a Wrap.

Implementation

factory TKeyValue.chips(
  String key,
  List<dynamic> items, {
  Color? color,
  Color? Function(String chipText)? colorBuilder,
  dynamic chipIcon,
  dynamic Function(String chipText)? iconBuilder,
  TVariant? type,
  TVariant? Function(String chipText)? typeBuilder,
  TSize size = TChipSize.sm,
  double spacing = 4.0,
  double runSpacing = 4.0,
  WrapCrossAlignment crossAxisAlignment = WrapCrossAlignment.center,
  WrapAlignment wrapAlignment = WrapAlignment.start,
  void Function(String chipText)? onTap,
  Widget? icon,
  double? width,
  Alignment? alignment,
  double? minWidth,
  double? maxWidth,
}) {
  final chipWidgets = <Widget>[];
  final stringValues = <String>[];
  for (final item in items) {
    if (item is TChip) {
      chipWidgets.add(item);
      if (item.text != null && item.text!.isNotEmpty) {
        stringValues.add(item.text!);
      }
    } else if (item != null) {
      final text = item.toString();
      if (text.isNotEmpty) {
        stringValues.add(text);
        chipWidgets.add(
          TChip(
            text: text,
            icon: iconBuilder?.call(text) ?? chipIcon,
            color: colorBuilder?.call(text) ?? color,
            type: typeBuilder?.call(text) ?? type,
            size: size,
            onTap: onTap != null ? () => onTap(text) : null,
          ),
        );
      }
    }
  }

  Widget? widget = chipWidgets.isNotEmpty
      ? Wrap(
          spacing: spacing,
          runSpacing: runSpacing,
          crossAxisAlignment: crossAxisAlignment,
          alignment: wrapAlignment,
          children: chipWidgets,
        )
      : null;

  return TKeyValue(
    key,
    value: stringValues.isNotEmpty ? stringValues.join(', ') : null,
    widget: widget,
    icon: icon,
    width: width,
    alignment: alignment,
    minWidth: minWidth,
    maxWidth: maxWidth,
  );
}