FileFetcherSnippet
このコードはファイルを特定のディレクトリから取得するものである。
import 'dart:io';
class FileFetcher{
Future<List<String>> get nameList async => await _getNameList();
Future<List<String>> get pathList async => await _getPathList();
final _trimFileStr = FileStrTrimer();
final String androidDirName = "/storage/emulated/0/Download/";
FileFetcher(){
_initFileFetcher();
}
Future<List> _initFileFetcher() async {
return await _fetchFileFromDownloadDir();
}
Future<List<String>> _getNameList() async {
final list = await _initFileFetcher();
return _trimFileStr.convertFileNameToNameString(list);
}
Future<List<String>> _getPathList() async {
final list = await _initFileFetcher();
return _trimFileStr.convertFileNameToPathString(list);
}
///このメソッドは外部ストレージのオブジェクトを取得するメソッドです。
Future<Directory> _fetchExternalDir() async {
Directory? directory = Directory("");
if(Platform.isWindows){
//todo
directory = Directory("");
}
else if(Platform.isAndroid){
directory = Directory(androidDirName);
}
else if(Platform.isIOS){
//todo
}
else{
//ファイル処理が失敗した際の処理
//例:showWarnDialog
}
return directory;
}
///このメソッドは外部ストレージのdownloadディレクトリ内のファイルを取得するメソッドです。
Future<List<FileSystemEntity>> _fetchFileFromDownloadDir() async {
Directory dir = await _fetchExternalDir();
List<FileSystemEntity> result = dir.listSync();
return result;
}
}
class FileStrTrimer{
List<String> convertFileNameToNameString(List listArg){
List<String> strList = convertFileNameToString(listArg);
List<String> result = [];
for(var i = 0; i < strList.length; i++){
result.add(
strList[i]
.replaceAll("File: '/storage/emulated/0/Download/", "")
.replaceAll("Directory: '/storage/emulated/0/Download/", "")
.replaceAll("'", "")
);
}
return result;
}
List<String> convertFileNameToString(List listArg){
List<String> result = [];
for(var i = 0; i < listArg.length; i++){
if(listArg[i].toString().contains(".trashed-") || listArg[i].toString().contains("Nearby Share")) continue;
result.add(listArg[i].toString());
}
return result;
}
List<String> convertFileNameToPathString(List listArg){
List<String> strList = convertFileNameToString(listArg);
List<String> result = [];
for(var i = 0; i < strList.length; i++){
result.add(
strList[i]
.replaceAll("File: '", "")
.replaceAll("Directory: '", "")
.replaceAll("'", "")
);
}
return result;
}
}