pickSegmentValue<T> static method

Future<Set<T>?> pickSegmentValue<T>(
  1. List<LabelValue<T>> items, {
  2. String? title,
  3. String? message,
  4. Set<T>? selected,
  5. bool multi = false,
  6. bool allowEmpty = false,
})

Implementation

static Future<Set<T>?> pickSegmentValue<T>(List<LabelValue<T>> items,
    {String? title, String? message, Set<T>? selected, bool multi = false, bool allowEmpty = false}) async {
  Set<T> selSet = {...?selected};
  return await showDialogX((b) {
    b.init(result: selSet);
    b.dialogWidth = DialogWidth.instrict;
    b.title(title?.text());
    b.actions(ok: true, cancel: true);
    List<Widget> ls = [];
    if (message != null) {
      ls << b.messageText(message, minHeight: 32, textAlign: TextAlign.start);
    }

    ls <<
        SegmentedButton<T>(
            multiSelectionEnabled: multi,
            emptySelectionAllowed: allowEmpty,
            showSelectedIcon: false,
            style: SegStyle,
            segments: items.mapList((e) => ButtonSegment<T>(value: e.value, label: e.label.text())),
            selected: selSet,
            onSelectionChanged: (newSelection) {
              selSet = newSelection;
              b.setResult(selSet);
              b.updateState();
            });
    return b.buildColumn(ls);
  });
}