pickIntRanges method

Future<CloseRange?> pickIntRanges({
  1. required CloseRange value,
  2. required int minValue,
  3. required int maxValue,
  4. required String label,
  5. required String title,
  6. int? divisions,
})

Implementation

Future<CloseRange?> pickIntRanges({
  required CloseRange value,
  required int minValue,
  required int maxValue,
  required String label,
  required String title,
  int? divisions,
}) async {
  assert(maxValue > minValue);
  return showColumn(
    title: title,
    ok: true,
    cancel: true,
    onContent: (uc) {
      if (!uc.hasResult) {
        uc.setResult(value);
      }
      CloseRange range = uc.getResult()!;
      return ColumnMin([
        RowMin([label.titleMedium(), space(width: 8), range.start.round().toString().titleMedium(), "-".text(), range.end.round().toString().titleMedium()]),
        RangeSlider(
          values: RangeValues(range.start.clamp(minValue, maxValue).toDouble(), range.end.clamp(minValue, maxValue).toDouble()),
          min: minValue.toDouble(),
          max: maxValue.toDouble(),
          divisions: divisions ?? (maxValue - minValue),
          onChanged: (v) {
            uc.setResult(CloseRange(v.start.toInt(), v.end.toInt()));
            uc.updateState();
          },
          labels: RangeLabels(range.start.round().toString(), range.end.round().toString()),
          padding: xy(0, 8),
        ),
        space(height: 8),
      ], crossAxisAlignment: CrossAxisAlignment.center);
    },
  );
}