baseDirectoryPath static method
Returns the path to the directory represented by baseDirectory
Implementation
static Future<String> baseDirectoryPath(BaseDirectory baseDirectory) async {
Directory? externalStorageDirectory;
Directory? externalCacheDirectory;
if (Task.useExternalStorage) {
externalStorageDirectory = await getExternalStorageDirectory();
externalCacheDirectory = (await getExternalCacheDirectories())?.first;
if (externalStorageDirectory == null || externalCacheDirectory == null) {
throw const FileSystemException(
'Android external storage is not available');
}
}
final baseDir = switch ((baseDirectory, Task.useExternalStorage)) {
(BaseDirectory.applicationDocuments, false) =>
await getApplicationDocumentsDirectory(),
(BaseDirectory.temporary, false) => await getTemporaryDirectory(),
(BaseDirectory.applicationSupport, false) =>
await getApplicationSupportDirectory(),
(BaseDirectory.applicationLibrary, false)
when Platform.isMacOS || Platform.isIOS =>
await getLibraryDirectory(),
(BaseDirectory.applicationLibrary, false) => Directory(
p.join((await getApplicationSupportDirectory()).path, 'Library')),
(BaseDirectory.root, _) => Directory('/'),
// Android only: external storage variants
(BaseDirectory.applicationDocuments, true) => externalStorageDirectory!,
(BaseDirectory.temporary, true) => externalCacheDirectory!,
(BaseDirectory.applicationSupport, true) =>
Directory(p.join(externalStorageDirectory!.path, 'Support')),
(BaseDirectory.applicationLibrary, true) =>
Directory(p.join(externalStorageDirectory!.path, 'Library'))
};
return baseDir.absolute.path;
}