Files
MWClash/lib/common/path.dart

60 lines
1.4 KiB
Dart
Raw Normal View History

2024-04-30 23:38:49 +08:00
import 'dart:async';
import 'dart:io';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
import 'constant.dart';
class AppPath {
static AppPath? _instance;
Completer<Directory> cacheDir = Completer();
// Future<Directory> _createDesktopCacheDir() async {
// final path = join(dirname(Platform.resolvedExecutable), 'cache');
// final dir = Directory(path);
// if (await dir.exists()) {
// await dir.create(recursive: true);
// }
// return dir;
// }
2024-04-30 23:38:49 +08:00
AppPath._internal() {
getApplicationSupportDirectory().then((value) {
cacheDir.complete(value);
});
// if (Platform.isAndroid) {
// getApplicationSupportDirectory().then((value) {
// cacheDir.complete(value);
// });
// } else {
// _createDesktopCacheDir().then((value) {
// cacheDir.complete(value);
// });
// }
2024-04-30 23:38:49 +08:00
}
factory AppPath() {
_instance ??= AppPath._internal();
return _instance!;
}
Future<String> getHomeDirPath() async {
final directory = await cacheDir.future;
2024-04-30 23:38:49 +08:00
return directory.path;
}
Future<String> getProfilesPath() async {
final directory = await cacheDir.future;
return join(directory.path, profilesDirectoryName);
2024-04-30 23:38:49 +08:00
}
Future<String?> getProfilePath(String? id) async {
if (id == null) return null;
final directory = await getProfilesPath();
return join(directory, "$id.yaml");
}
}
final appPath = AppPath();