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);
  });
}