getFileList method

Future<List<File>> getFileList()

Implementation

Future<List<File>> getFileList() async {
  final List<File> listFile = [];
  final String? dir;
  if (Platform.isWindows) {
    dir = await getLocalSupportDir();
  } else if (Platform.isAndroid) {
    final esdTemp = await getExternalStorageDirectory();
    if (esdTemp != null) {
      dir = esdTemp.path;
    } else {
      final tdTemp = await getTemporaryDirectory();
      dir = tdTemp.path;
    }
  } else {
    dir = await getLocalDocumentDir();
  }
  if (dir == null) {
    return [];
  }

  final list = Directory(dir).listSync(followLinks: false);
  final filterLogList = list.filter((fileSystemEntity) {
    if (fileSystemEntity.path.contains(".log") || fileSystemEntity.path.contains(".dmp")) {
      final fileDateTime = FileStat.statSync(fileSystemEntity.path).changed;
      final differDays = DateTime.now().difference(fileDateTime).inDays;
      if (differDays > 3) {
        return false;
      }
      return true;
    } else {
      return false;
    }
  }).toList();
  filterLogList.sort((a, b) {
    final timeA = FileStat.statSync(a.path).changed.millisecondsSinceEpoch;
    final timeB = FileStat.statSync(b.path).changed.millisecondsSinceEpoch;
    return timeA.compareTo(timeB);
  });
  final iterable = filterLogList.map((fileSystemEntity) => File(fileSystemEntity.path));
  listFile.addAll(iterable);
  return listFile;
}