Skip to content

enum type select #1

@samithe7

Description

@samithe7
class _WGetxEnumx<T extends Enum> extends StatefulWidget {
  const _WGetxEnumx({
    super.key,
    required this.values,
    required this.initialSelection,
    required this.onSelectionChanged,
  });

  final List<T> values;
  final Set<T> initialSelection;
  final void Function(Set<T>) onSelectionChanged;

  @override
  State<_WGetxEnumx<T>> createState() => _WGetxEnumxState<T>();
}

class _WGetxEnumxState<T extends Enum> extends State<_WGetxEnumx<T>> {
  late Set<T> selectedTypes;

  @override
  void initState() {
    super.initState();
    selectedTypes = widget.initialSelection;
  }

  @override
  Widget build(BuildContext context) {
    return SegmentedButton<T>(
      segments: <ButtonSegment<T>>[
        for (final T view in widget.values)
          ButtonSegment<T>(value: view, label: Text(view.name)),
      ],
      selected: selectedTypes,
      onSelectionChanged: (Set<T> newSelection) {
        setState(() {
          selectedTypes = newSelection;
        });
        widget.onSelectionChanged(newSelection);
      },
    );
  }
}


Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions