pub package

Opens native macOS dialogs to pick files or folders. Features:

  • Pick files, folders or both.
  • Pick a file to save.


/// Opens a macOS dialog based on the given arguments.
/// [mode]:
///   file: pick files.
///   folder: pick folders.
///   fileAndFolder: pick files and folders.
///   saveFile: pick a file saving path.
/// [allowsMultiple] when true, allows multiple selection. Default: false.
/// [defaultName] default file name for save dialog.
/// Return value:
///   [null]: dialog closed / cancelled.
///   A list of [MacosFilePickerPath] representing a platform path.
///   When [allowsMultiple] is false, the list should only has one item.
Future<List<MacosFilePickerPath>?> pick(MacosFilePickerMode mode,
    {String? defaultName, bool? allowsMultiple});


final _macosFilePickerPlugin = MacosFilePicker();

Future<void> _openDialog() async {
  // Pick a single file path.
  final result = await _macosFilePickerPlugin.pick(_mode,
      allowsMultiple: _allowsMultiple);
  setState(() {
    _output = result == null ? 'Cancelled' : result.toString();