listFiles static method

List<List> listFiles(
  1. String parentPath,
  2. {bool doOnlyFolder = false,
  3. List<String>? allowedExtensions,
  4. bool doHidden = false,
  5. bool order = true}
)

Implementation

static List<List<dynamic>> listFiles(String parentPath,
    {bool doOnlyFolder = false,
    List<String>? allowedExtensions,
    bool doHidden = false,
    bool order = true}) {
  List<List<dynamic>> pathAndNameList = [];

  try {
    var list = Directory(parentPath).listSync();
    for (var fse in list) {
      String path = fse.path;
      String filename = basename(path);
      if (filename.startsWith(".")) {
        continue;
      }
      String parentname = dirname(path);

      var isDirectory = FileSystemEntity.isDirectorySync(path);
      if (doOnlyFolder && !isDirectory) {
        continue;
      }

      if (isDirectory) {
        pathAndNameList.add(<dynamic>[parentname, filename, isDirectory]);
      } else if (allowedExtensions != null) {
        for (var ext in allowedExtensions) {
          if (filename.endsWith(ext)) {
            pathAndNameList.add(<dynamic>[parentname, filename, isDirectory]);
            break;
          }
        }
      } else {
        pathAndNameList.add(<dynamic>[parentname, filename, isDirectory]);
      }
    }
  } catch (e) {
    print(e);
  }

  pathAndNameList.sort((o1, o2) {
    String n1 = o1[1];
    String n2 = o2[1];
    return n1.compareTo(n2);
  });

  return pathAndNameList;
}