From 2e8761f5333f0681b0b44d4fe6d508ed126d5ecd Mon Sep 17 00:00:00 2001 From: lollipopkit Date: Sat, 16 Sep 2023 17:06:47 +0800 Subject: [PATCH] opt.: divide `platform` --- lib/core/analysis.dart | 3 +-- lib/core/update.dart | 2 +- lib/core/utils/icloud.dart | 2 +- lib/core/utils/misc.dart | 3 +-- .../{platform.dart => platform/base.dart} | 23 ---------------- lib/core/utils/platform/path.dart | 26 +++++++++++++++++++ lib/core/utils/ui.dart | 2 +- lib/data/model/app/path_with_prefix.dart | 2 +- lib/data/model/app/update.dart | 2 +- lib/data/res/path.dart | 3 ++- lib/data/store/setting.dart | 2 +- lib/main.dart | 2 +- lib/view/page/backup.dart | 2 +- lib/view/page/home.dart | 2 +- lib/view/page/private_key/list.dart | 3 ++- lib/view/page/server/tab.dart | 2 +- lib/view/page/setting/entry.dart | 2 +- lib/view/page/setting/virt_key.dart | 2 +- lib/view/page/ssh_term.dart | 2 +- lib/view/page/storage/sftp.dart | 2 +- lib/view/widget/server_func_btns.dart | 3 ++- 21 files changed, 48 insertions(+), 44 deletions(-) rename lib/core/utils/{platform.dart => platform/base.dart} (66%) create mode 100644 lib/core/utils/platform/path.dart diff --git a/lib/core/analysis.dart b/lib/core/analysis.dart index 1fab0020..856b18c2 100644 --- a/lib/core/analysis.dart +++ b/lib/core/analysis.dart @@ -3,10 +3,9 @@ import 'dart:io'; import 'package:countly_flutter/countly_flutter.dart'; import 'package:toolbox/core/build_mode.dart'; +import 'package:toolbox/core/utils/platform/base.dart'; import 'package:toolbox/data/res/logger.dart'; -import 'utils/platform.dart'; - class Analysis { static const _url = 'https://countly.xuty.cc'; static const _key = '80372a2a66424b32d0ac8991bfa1ef058bd36b1f'; diff --git a/lib/core/update.dart b/lib/core/update.dart index d920bc3f..f9f189ca 100644 --- a/lib/core/update.dart +++ b/lib/core/update.dart @@ -7,6 +7,7 @@ import 'package:r_upgrade/r_upgrade.dart'; import 'package:toolbox/core/extension/context/common.dart'; import 'package:toolbox/core/extension/context/dialog.dart'; import 'package:toolbox/core/extension/context/snackbar.dart'; +import 'package:toolbox/core/utils/platform/base.dart'; import 'package:toolbox/data/model/app/update.dart'; import 'package:toolbox/data/res/logger.dart'; import 'package:toolbox/data/res/path.dart'; @@ -15,7 +16,6 @@ import 'package:toolbox/data/res/provider.dart'; import '../data/res/build_data.dart'; import '../data/service/app.dart'; import '../locator.dart'; -import 'utils/platform.dart'; import 'utils/ui.dart'; Future isFileAvailable(String url) async { diff --git a/lib/core/utils/icloud.dart b/lib/core/utils/icloud.dart index 6fc2d48d..785413aa 100644 --- a/lib/core/utils/icloud.dart +++ b/lib/core/utils/icloud.dart @@ -2,12 +2,12 @@ import 'dart:async'; import 'dart:io'; import 'package:icloud_storage/icloud_storage.dart'; +import 'package:toolbox/core/utils/platform/base.dart'; import 'package:toolbox/data/res/logger.dart'; import '../../data/model/app/error.dart'; import '../../data/model/app/json.dart'; import '../../data/res/path.dart'; -import 'platform.dart'; class ICloud { static const _containerId = 'iCloud.tech.lolli.serverbox'; diff --git a/lib/core/utils/misc.dart b/lib/core/utils/misc.dart index a1b881a3..454d5037 100644 --- a/lib/core/utils/misc.dart +++ b/lib/core/utils/misc.dart @@ -6,10 +6,9 @@ import 'package:flutter/widgets.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:plain_notification_token/plain_notification_token.dart'; import 'package:share_plus/share_plus.dart'; +import 'package:toolbox/core/utils/platform/base.dart'; import 'package:toolbox/data/res/provider.dart'; -import 'platform.dart'; - Future shareFiles(BuildContext context, List filePaths) async { for (final filePath in filePaths) { if (!await File(filePath).exists()) { diff --git a/lib/core/utils/platform.dart b/lib/core/utils/platform/base.dart similarity index 66% rename from lib/core/utils/platform.dart rename to lib/core/utils/platform/base.dart index cb920197..cf7dafb0 100644 --- a/lib/core/utils/platform.dart +++ b/lib/core/utils/platform/base.dart @@ -38,10 +38,7 @@ final _p = () { return PlatformType.unknown; }(); -final _pathSep = Platform.pathSeparator; - PlatformType get platform => _p; -String get pathSeparator => _pathSep; bool get isAndroid => _p == PlatformType.android; bool get isIOS => _p == PlatformType.ios; @@ -54,23 +51,3 @@ bool get isDesktop => _p == PlatformType.linux || _p == PlatformType.macos || _p == PlatformType.windows; - -/// Available only on desktop, -/// return null on mobile -String? getHomeDir() { - final envVars = Platform.environment; - if (isMacOS || isLinux) { - return envVars['HOME']; - } else if (isWindows) { - return envVars['UserProfile']; - } - return null; -} - -/// Join two paths with platform specific separator -String joinPath(String path1, String path2) { - if (isWindows) { - return path1 + (path1.endsWith('\\') ? '' : '\\') + path2; - } - return path1 + (path1.endsWith('/') ? '' : '/') + path2; -} diff --git a/lib/core/utils/platform/path.dart b/lib/core/utils/platform/path.dart new file mode 100644 index 00000000..93cf90c8 --- /dev/null +++ b/lib/core/utils/platform/path.dart @@ -0,0 +1,26 @@ +import 'dart:io'; + +import 'package:toolbox/core/utils/platform/base.dart'; + +final _pathSep = Platform.pathSeparator; +String get pathSeparator => _pathSep; + +/// Available only on desktop, +/// return null on mobile +String? getHomeDir() { + final envVars = Platform.environment; + if (isMacOS || isLinux) { + return envVars['HOME']; + } else if (isWindows) { + return envVars['UserProfile']; + } + return null; +} + +/// Join two paths with platform specific separator +String joinPath(String path1, String path2) { + if (isWindows) { + return path1 + (path1.endsWith('\\') ? '' : '\\') + path2; + } + return path1 + (path1.endsWith('/') ? '' : '/') + path2; +} diff --git a/lib/core/utils/ui.dart b/lib/core/utils/ui.dart index 85e8d7b0..cb13a465 100644 --- a/lib/core/utils/ui.dart +++ b/lib/core/utils/ui.dart @@ -3,10 +3,10 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:toolbox/core/utils/platform/base.dart'; import 'package:url_launcher/url_launcher.dart'; import 'misc.dart'; -import 'platform.dart'; import '../extension/stringx.dart'; import '../extension/uint8list.dart'; diff --git a/lib/data/model/app/path_with_prefix.dart b/lib/data/model/app/path_with_prefix.dart index ada3371e..df39ca75 100644 --- a/lib/data/model/app/path_with_prefix.dart +++ b/lib/data/model/app/path_with_prefix.dart @@ -1,4 +1,4 @@ -import '../../../core/utils/platform.dart'; +import 'package:toolbox/core/utils/platform/path.dart'; /// It's used on platform's file system. /// So use [Platform.pathSeparator] to join path. diff --git a/lib/data/model/app/update.dart b/lib/data/model/app/update.dart index 8ba96983..d2e12213 100644 --- a/lib/data/model/app/update.dart +++ b/lib/data/model/app/update.dart @@ -27,7 +27,7 @@ import 'dart:convert'; -import '/core/utils/platform.dart'; +import 'package:toolbox/core/utils/platform/base.dart'; class AppUpdate { const AppUpdate({ diff --git a/lib/data/res/path.dart b/lib/data/res/path.dart index f73d6f26..4a46e88f 100644 --- a/lib/data/res/path.dart +++ b/lib/data/res/path.dart @@ -1,7 +1,8 @@ import 'dart:io'; import 'package:path_provider/path_provider.dart'; -import 'package:toolbox/core/utils/platform.dart'; +import 'package:toolbox/core/utils/platform/base.dart'; +import 'package:toolbox/core/utils/platform/path.dart'; class Paths { const Paths._(); diff --git a/lib/data/store/setting.dart b/lib/data/store/setting.dart index 231af1f9..db289d00 100644 --- a/lib/data/store/setting.dart +++ b/lib/data/store/setting.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:toolbox/core/persistant_store.dart'; -import 'package:toolbox/core/utils/platform.dart'; +import 'package:toolbox/core/utils/platform/base.dart'; import '../model/app/net_view.dart'; import '../res/default.dart'; diff --git a/lib/main.dart b/lib/main.dart index b2a34bab..413d2e58 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -7,13 +7,13 @@ import 'package:macos_window_utils/window_manipulator.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:toolbox/core/channel/bg_run.dart'; +import 'package:toolbox/core/utils/platform/base.dart'; import 'package:toolbox/data/res/provider.dart'; import 'package:toolbox/data/res/store.dart'; import 'app.dart'; import 'core/analysis.dart'; import 'core/utils/icloud.dart'; -import 'core/utils/platform.dart'; import 'core/utils/ui.dart'; import 'data/model/app/net_view.dart'; import 'data/model/server/private_key_info.dart'; diff --git a/lib/view/page/backup.dart b/lib/view/page/backup.dart index 86225887..092f66c7 100644 --- a/lib/view/page/backup.dart +++ b/lib/view/page/backup.dart @@ -7,7 +7,7 @@ import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:toolbox/core/extension/context/common.dart'; import 'package:toolbox/core/extension/context/dialog.dart'; import 'package:toolbox/core/extension/context/snackbar.dart'; -import 'package:toolbox/core/utils/platform.dart'; +import 'package:toolbox/core/utils/platform/base.dart'; import 'package:toolbox/data/model/app/backup.dart'; import 'package:toolbox/data/res/logger.dart'; import 'package:toolbox/data/res/path.dart'; diff --git a/lib/view/page/home.dart b/lib/view/page/home.dart index 028194b5..723662d1 100644 --- a/lib/view/page/home.dart +++ b/lib/view/page/home.dart @@ -7,6 +7,7 @@ import 'package:get_it/get_it.dart'; import 'package:toolbox/core/channel/bg_run.dart'; import 'package:toolbox/core/channel/home_widget.dart'; import 'package:toolbox/core/extension/context/dialog.dart'; +import 'package:toolbox/core/utils/platform/base.dart'; import 'package:toolbox/data/res/github_id.dart'; import 'package:toolbox/data/res/logger.dart'; import 'package:toolbox/data/res/provider.dart'; @@ -15,7 +16,6 @@ import 'package:toolbox/data/res/store.dart'; import '../../core/analysis.dart'; import '../../core/route.dart'; import '../../core/update.dart'; -import '../../core/utils/platform.dart'; import '../../core/utils/ui.dart'; import '../../data/model/app/github_id.dart'; import '../../data/model/app/tab.dart'; diff --git a/lib/view/page/private_key/list.dart b/lib/view/page/private_key/list.dart index 17414713..698ddbc8 100644 --- a/lib/view/page/private_key/list.dart +++ b/lib/view/page/private_key/list.dart @@ -6,10 +6,11 @@ import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:provider/provider.dart'; import 'package:toolbox/core/extension/context/common.dart'; import 'package:toolbox/core/extension/context/dialog.dart'; +import 'package:toolbox/core/utils/platform/base.dart'; +import 'package:toolbox/core/utils/platform/path.dart'; import 'package:toolbox/data/res/store.dart'; import '../../../core/route.dart'; -import '../../../core/utils/platform.dart'; import '../../../data/model/server/private_key_info.dart'; import '../../../data/provider/private_key.dart'; import '../../../data/res/ui.dart'; diff --git a/lib/view/page/server/tab.dart b/lib/view/page/server/tab.dart index 96797eb0..5e832d9f 100644 --- a/lib/view/page/server/tab.dart +++ b/lib/view/page/server/tab.dart @@ -7,13 +7,13 @@ import 'package:provider/provider.dart'; import 'package:toolbox/core/extension/context/dialog.dart'; import 'package:toolbox/core/extension/media_queryx.dart'; import 'package:toolbox/core/extension/ssh_client.dart'; +import 'package:toolbox/core/utils/platform/base.dart'; import 'package:toolbox/data/model/app/shell_func.dart'; import 'package:toolbox/data/res/provider.dart'; import 'package:toolbox/data/res/store.dart'; import '../../../core/route.dart'; import '../../../core/utils/misc.dart'; -import '../../../core/utils/platform.dart'; import '../../../data/model/app/net_view.dart'; import '../../../data/model/server/disk.dart'; import '../../../data/model/server/server.dart'; diff --git a/lib/view/page/setting/entry.dart b/lib/view/page/setting/entry.dart index 10532491..d7b81f76 100644 --- a/lib/view/page/setting/entry.dart +++ b/lib/view/page/setting/entry.dart @@ -12,13 +12,13 @@ import 'package:toolbox/core/extension/context/snackbar.dart'; import 'package:toolbox/core/extension/locale.dart'; import 'package:toolbox/core/extension/context/dialog.dart'; import 'package:toolbox/core/extension/stringx.dart'; +import 'package:toolbox/core/utils/platform/base.dart'; import 'package:toolbox/data/res/provider.dart'; import 'package:toolbox/data/res/store.dart'; import '../../../core/persistant_store.dart'; import '../../../core/route.dart'; import '../../../core/utils/misc.dart'; -import '../../../core/utils/platform.dart'; import '../../../core/update.dart'; import '../../../data/model/app/net_view.dart'; import '../../../data/provider/app.dart'; diff --git a/lib/view/page/setting/virt_key.dart b/lib/view/page/setting/virt_key.dart index 9de76d84..b821a6a6 100644 --- a/lib/view/page/setting/virt_key.dart +++ b/lib/view/page/setting/virt_key.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:toolbox/core/extension/context/snackbar.dart'; import 'package:toolbox/core/extension/order.dart'; -import 'package:toolbox/core/utils/platform.dart'; +import 'package:toolbox/core/utils/platform/base.dart'; import 'package:toolbox/data/model/ssh/virtual_key.dart'; import 'package:toolbox/data/res/store.dart'; import 'package:toolbox/data/res/ui.dart'; diff --git a/lib/view/page/ssh_term.dart b/lib/view/page/ssh_term.dart index 44a66afa..1d135a4e 100644 --- a/lib/view/page/ssh_term.dart +++ b/lib/view/page/ssh_term.dart @@ -10,12 +10,12 @@ import 'package:provider/provider.dart'; import 'package:toolbox/core/extension/context/common.dart'; import 'package:toolbox/core/extension/context/dialog.dart'; import 'package:toolbox/core/extension/context/snackbar.dart'; +import 'package:toolbox/core/utils/platform/base.dart'; import 'package:toolbox/data/res/store.dart'; import 'package:xterm/core.dart'; import 'package:xterm/ui.dart' hide TerminalThemes; import '../../core/route.dart'; -import '../../core/utils/platform.dart'; import '../../core/utils/misc.dart'; import '../../core/utils/server.dart'; import '../../data/model/server/server_private_info.dart'; diff --git a/lib/view/page/storage/sftp.dart b/lib/view/page/storage/sftp.dart index ae898966..8460a0fd 100644 --- a/lib/view/page/storage/sftp.dart +++ b/lib/view/page/storage/sftp.dart @@ -8,6 +8,7 @@ import 'package:toolbox/core/extension/context/common.dart'; import 'package:toolbox/core/extension/context/dialog.dart'; import 'package:toolbox/core/extension/context/snackbar.dart'; import 'package:toolbox/core/extension/sftpfile.dart'; +import 'package:toolbox/core/utils/platform/base.dart'; import 'package:toolbox/data/res/logger.dart'; import 'package:toolbox/data/res/misc.dart'; import 'package:toolbox/data/res/provider.dart'; @@ -18,7 +19,6 @@ import '../../../core/extension/numx.dart'; import '../../../core/extension/stringx.dart'; import '../../../core/route.dart'; import '../../../core/utils/misc.dart'; -import '../../../core/utils/platform.dart'; import '../../../data/model/server/server_private_info.dart'; import '../../../data/model/sftp/absolute_path.dart'; import '../../../data/model/sftp/browser_status.dart'; diff --git a/lib/view/widget/server_func_btns.dart b/lib/view/widget/server_func_btns.dart index 137a7e6e..81e6cfc9 100644 --- a/lib/view/widget/server_func_btns.dart +++ b/lib/view/widget/server_func_btns.dart @@ -7,13 +7,14 @@ import 'package:toolbox/core/extension/context/dialog.dart'; import 'package:toolbox/core/extension/context/snackbar.dart'; import 'package:toolbox/core/extension/ssh_client.dart'; import 'package:toolbox/core/extension/uint8list.dart'; +import 'package:toolbox/core/utils/platform/base.dart'; +import 'package:toolbox/core/utils/platform/path.dart'; import 'package:toolbox/data/model/pkg/manager.dart'; import 'package:toolbox/data/model/server/dist.dart'; import 'package:toolbox/data/res/provider.dart'; import '../../core/route.dart'; import '../../core/utils/misc.dart'; -import '../../core/utils/platform.dart'; import '../../core/utils/server.dart'; import '../../data/model/app/menu.dart'; import '../../data/model/pkg/upgrade_info.dart';