list method

Iterable<AssetItem> list([
  1. String? prefix
])

Implementation

Iterable<AssetItem> list([String? prefix]) sync* {
  // If a prefix is provided, navigate to that folder first
  if (prefix != null) {
    final parts = prefix.split('/');
    AssetFolder? current = this;

    for (var i = 0; i < parts.length; i++) {
      final folderPath = parts.sublist(0, i + 1).join('/');
      current = current?.subfolders[folderPath];
      if (current == null) return; // prefix not found
    }
    yield* current!.list(); // recursively list from the prefix folder
    return;
  }

  // No prefix: yield items in this folder
  yield* items.values;

  // Recurse into subfolders
  for (final sub in subfolders.values) {
    yield* sub.list();
  }
}