askMultiSelect static method

Future<List<int>> askMultiSelect(
  1. String title,
  2. List<String> options, {
  3. List<String>? defaultSelected,
  4. List<bool>? defaults,
})

Multi-select with checkboxes and arrow key navigation

Implementation

static Future<List<int>> askMultiSelect(
  String title,
  List<String> options, {
  List<String>? defaultSelected,
  List<bool>? defaults,
}) async {
  if (options.isEmpty) {
    return <int>[];
  }

  // Convert defaultSelected names to boolean list if provided
  final List<bool> defaultBools = defaults ??
      options.map((String opt) {
        return defaultSelected?.contains(opt) ?? true;
      }).toList();

  if (PromptEnvironment.useSimplePrompts) {
    return _showSimpleMultiSelect(title, options, defaultBools);
  }

  print('');
  try {
    final List<int> result = MultiSelect(
      prompt: title,
      options: options,
      defaults: defaultBools,
    ).interact();
    return result;
  } on Object {
    return _showSimpleMultiSelect(title, options, defaultBools);
  }
}