opt.: divide platform

This commit is contained in:
lollipopkit
2023-09-16 17:06:47 +08:00
parent 2a6c2f7c72
commit 2e8761f533
21 changed files with 48 additions and 44 deletions

View File

@@ -3,10 +3,9 @@ import 'dart:io';
import 'package:countly_flutter/countly_flutter.dart'; import 'package:countly_flutter/countly_flutter.dart';
import 'package:toolbox/core/build_mode.dart'; import 'package:toolbox/core/build_mode.dart';
import 'package:toolbox/core/utils/platform/base.dart';
import 'package:toolbox/data/res/logger.dart'; import 'package:toolbox/data/res/logger.dart';
import 'utils/platform.dart';
class Analysis { class Analysis {
static const _url = 'https://countly.xuty.cc'; static const _url = 'https://countly.xuty.cc';
static const _key = '80372a2a66424b32d0ac8991bfa1ef058bd36b1f'; static const _key = '80372a2a66424b32d0ac8991bfa1ef058bd36b1f';

View File

@@ -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/common.dart';
import 'package:toolbox/core/extension/context/dialog.dart'; import 'package:toolbox/core/extension/context/dialog.dart';
import 'package:toolbox/core/extension/context/snackbar.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/model/app/update.dart';
import 'package:toolbox/data/res/logger.dart'; import 'package:toolbox/data/res/logger.dart';
import 'package:toolbox/data/res/path.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/res/build_data.dart';
import '../data/service/app.dart'; import '../data/service/app.dart';
import '../locator.dart'; import '../locator.dart';
import 'utils/platform.dart';
import 'utils/ui.dart'; import 'utils/ui.dart';
Future<bool> isFileAvailable(String url) async { Future<bool> isFileAvailable(String url) async {

View File

@@ -2,12 +2,12 @@ import 'dart:async';
import 'dart:io'; import 'dart:io';
import 'package:icloud_storage/icloud_storage.dart'; import 'package:icloud_storage/icloud_storage.dart';
import 'package:toolbox/core/utils/platform/base.dart';
import 'package:toolbox/data/res/logger.dart'; import 'package:toolbox/data/res/logger.dart';
import '../../data/model/app/error.dart'; import '../../data/model/app/error.dart';
import '../../data/model/app/json.dart'; import '../../data/model/app/json.dart';
import '../../data/res/path.dart'; import '../../data/res/path.dart';
import 'platform.dart';
class ICloud { class ICloud {
static const _containerId = 'iCloud.tech.lolli.serverbox'; static const _containerId = 'iCloud.tech.lolli.serverbox';

View File

@@ -6,10 +6,9 @@ import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:plain_notification_token/plain_notification_token.dart'; import 'package:plain_notification_token/plain_notification_token.dart';
import 'package:share_plus/share_plus.dart'; import 'package:share_plus/share_plus.dart';
import 'package:toolbox/core/utils/platform/base.dart';
import 'package:toolbox/data/res/provider.dart'; import 'package:toolbox/data/res/provider.dart';
import 'platform.dart';
Future<bool> shareFiles(BuildContext context, List<String> filePaths) async { Future<bool> shareFiles(BuildContext context, List<String> filePaths) async {
for (final filePath in filePaths) { for (final filePath in filePaths) {
if (!await File(filePath).exists()) { if (!await File(filePath).exists()) {

View File

@@ -38,10 +38,7 @@ final _p = () {
return PlatformType.unknown; return PlatformType.unknown;
}(); }();
final _pathSep = Platform.pathSeparator;
PlatformType get platform => _p; PlatformType get platform => _p;
String get pathSeparator => _pathSep;
bool get isAndroid => _p == PlatformType.android; bool get isAndroid => _p == PlatformType.android;
bool get isIOS => _p == PlatformType.ios; bool get isIOS => _p == PlatformType.ios;
@@ -54,23 +51,3 @@ bool get isDesktop =>
_p == PlatformType.linux || _p == PlatformType.linux ||
_p == PlatformType.macos || _p == PlatformType.macos ||
_p == PlatformType.windows; _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;
}

View File

@@ -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;
}

View File

@@ -3,10 +3,10 @@ import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:toolbox/core/utils/platform/base.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import 'misc.dart'; import 'misc.dart';
import 'platform.dart';
import '../extension/stringx.dart'; import '../extension/stringx.dart';
import '../extension/uint8list.dart'; import '../extension/uint8list.dart';

View File

@@ -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. /// It's used on platform's file system.
/// So use [Platform.pathSeparator] to join path. /// So use [Platform.pathSeparator] to join path.

View File

@@ -27,7 +27,7 @@
import 'dart:convert'; import 'dart:convert';
import '/core/utils/platform.dart'; import 'package:toolbox/core/utils/platform/base.dart';
class AppUpdate { class AppUpdate {
const AppUpdate({ const AppUpdate({

View File

@@ -1,7 +1,8 @@
import 'dart:io'; import 'dart:io';
import 'package:path_provider/path_provider.dart'; 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 { class Paths {
const Paths._(); const Paths._();

View File

@@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:toolbox/core/persistant_store.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 '../model/app/net_view.dart';
import '../res/default.dart'; import '../res/default.dart';

View File

@@ -7,13 +7,13 @@ import 'package:macos_window_utils/window_manipulator.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
import 'package:toolbox/core/channel/bg_run.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/provider.dart';
import 'package:toolbox/data/res/store.dart'; import 'package:toolbox/data/res/store.dart';
import 'app.dart'; import 'app.dart';
import 'core/analysis.dart'; import 'core/analysis.dart';
import 'core/utils/icloud.dart'; import 'core/utils/icloud.dart';
import 'core/utils/platform.dart';
import 'core/utils/ui.dart'; import 'core/utils/ui.dart';
import 'data/model/app/net_view.dart'; import 'data/model/app/net_view.dart';
import 'data/model/server/private_key_info.dart'; import 'data/model/server/private_key_info.dart';

View File

@@ -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/common.dart';
import 'package:toolbox/core/extension/context/dialog.dart'; import 'package:toolbox/core/extension/context/dialog.dart';
import 'package:toolbox/core/extension/context/snackbar.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/model/app/backup.dart';
import 'package:toolbox/data/res/logger.dart'; import 'package:toolbox/data/res/logger.dart';
import 'package:toolbox/data/res/path.dart'; import 'package:toolbox/data/res/path.dart';

View File

@@ -7,6 +7,7 @@ import 'package:get_it/get_it.dart';
import 'package:toolbox/core/channel/bg_run.dart'; import 'package:toolbox/core/channel/bg_run.dart';
import 'package:toolbox/core/channel/home_widget.dart'; import 'package:toolbox/core/channel/home_widget.dart';
import 'package:toolbox/core/extension/context/dialog.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/github_id.dart';
import 'package:toolbox/data/res/logger.dart'; import 'package:toolbox/data/res/logger.dart';
import 'package:toolbox/data/res/provider.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/analysis.dart';
import '../../core/route.dart'; import '../../core/route.dart';
import '../../core/update.dart'; import '../../core/update.dart';
import '../../core/utils/platform.dart';
import '../../core/utils/ui.dart'; import '../../core/utils/ui.dart';
import '../../data/model/app/github_id.dart'; import '../../data/model/app/github_id.dart';
import '../../data/model/app/tab.dart'; import '../../data/model/app/tab.dart';

View File

@@ -6,10 +6,11 @@ import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:toolbox/core/extension/context/common.dart'; import 'package:toolbox/core/extension/context/common.dart';
import 'package:toolbox/core/extension/context/dialog.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 'package:toolbox/data/res/store.dart';
import '../../../core/route.dart'; import '../../../core/route.dart';
import '../../../core/utils/platform.dart';
import '../../../data/model/server/private_key_info.dart'; import '../../../data/model/server/private_key_info.dart';
import '../../../data/provider/private_key.dart'; import '../../../data/provider/private_key.dart';
import '../../../data/res/ui.dart'; import '../../../data/res/ui.dart';

View File

@@ -7,13 +7,13 @@ import 'package:provider/provider.dart';
import 'package:toolbox/core/extension/context/dialog.dart'; import 'package:toolbox/core/extension/context/dialog.dart';
import 'package:toolbox/core/extension/media_queryx.dart'; import 'package:toolbox/core/extension/media_queryx.dart';
import 'package:toolbox/core/extension/ssh_client.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/model/app/shell_func.dart';
import 'package:toolbox/data/res/provider.dart'; import 'package:toolbox/data/res/provider.dart';
import 'package:toolbox/data/res/store.dart'; import 'package:toolbox/data/res/store.dart';
import '../../../core/route.dart'; import '../../../core/route.dart';
import '../../../core/utils/misc.dart'; import '../../../core/utils/misc.dart';
import '../../../core/utils/platform.dart';
import '../../../data/model/app/net_view.dart'; import '../../../data/model/app/net_view.dart';
import '../../../data/model/server/disk.dart'; import '../../../data/model/server/disk.dart';
import '../../../data/model/server/server.dart'; import '../../../data/model/server/server.dart';

View File

@@ -12,13 +12,13 @@ import 'package:toolbox/core/extension/context/snackbar.dart';
import 'package:toolbox/core/extension/locale.dart'; import 'package:toolbox/core/extension/locale.dart';
import 'package:toolbox/core/extension/context/dialog.dart'; import 'package:toolbox/core/extension/context/dialog.dart';
import 'package:toolbox/core/extension/stringx.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/provider.dart';
import 'package:toolbox/data/res/store.dart'; import 'package:toolbox/data/res/store.dart';
import '../../../core/persistant_store.dart'; import '../../../core/persistant_store.dart';
import '../../../core/route.dart'; import '../../../core/route.dart';
import '../../../core/utils/misc.dart'; import '../../../core/utils/misc.dart';
import '../../../core/utils/platform.dart';
import '../../../core/update.dart'; import '../../../core/update.dart';
import '../../../data/model/app/net_view.dart'; import '../../../data/model/app/net_view.dart';
import '../../../data/provider/app.dart'; import '../../../data/provider/app.dart';

View File

@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:toolbox/core/extension/context/snackbar.dart'; import 'package:toolbox/core/extension/context/snackbar.dart';
import 'package:toolbox/core/extension/order.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/model/ssh/virtual_key.dart';
import 'package:toolbox/data/res/store.dart'; import 'package:toolbox/data/res/store.dart';
import 'package:toolbox/data/res/ui.dart'; import 'package:toolbox/data/res/ui.dart';

View File

@@ -10,12 +10,12 @@ import 'package:provider/provider.dart';
import 'package:toolbox/core/extension/context/common.dart'; import 'package:toolbox/core/extension/context/common.dart';
import 'package:toolbox/core/extension/context/dialog.dart'; import 'package:toolbox/core/extension/context/dialog.dart';
import 'package:toolbox/core/extension/context/snackbar.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:toolbox/data/res/store.dart';
import 'package:xterm/core.dart'; import 'package:xterm/core.dart';
import 'package:xterm/ui.dart' hide TerminalThemes; import 'package:xterm/ui.dart' hide TerminalThemes;
import '../../core/route.dart'; import '../../core/route.dart';
import '../../core/utils/platform.dart';
import '../../core/utils/misc.dart'; import '../../core/utils/misc.dart';
import '../../core/utils/server.dart'; import '../../core/utils/server.dart';
import '../../data/model/server/server_private_info.dart'; import '../../data/model/server/server_private_info.dart';

View File

@@ -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/dialog.dart';
import 'package:toolbox/core/extension/context/snackbar.dart'; import 'package:toolbox/core/extension/context/snackbar.dart';
import 'package:toolbox/core/extension/sftpfile.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/logger.dart';
import 'package:toolbox/data/res/misc.dart'; import 'package:toolbox/data/res/misc.dart';
import 'package:toolbox/data/res/provider.dart'; import 'package:toolbox/data/res/provider.dart';
@@ -18,7 +19,6 @@ import '../../../core/extension/numx.dart';
import '../../../core/extension/stringx.dart'; import '../../../core/extension/stringx.dart';
import '../../../core/route.dart'; import '../../../core/route.dart';
import '../../../core/utils/misc.dart'; import '../../../core/utils/misc.dart';
import '../../../core/utils/platform.dart';
import '../../../data/model/server/server_private_info.dart'; import '../../../data/model/server/server_private_info.dart';
import '../../../data/model/sftp/absolute_path.dart'; import '../../../data/model/sftp/absolute_path.dart';
import '../../../data/model/sftp/browser_status.dart'; import '../../../data/model/sftp/browser_status.dart';

View File

@@ -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/context/snackbar.dart';
import 'package:toolbox/core/extension/ssh_client.dart'; import 'package:toolbox/core/extension/ssh_client.dart';
import 'package:toolbox/core/extension/uint8list.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/pkg/manager.dart';
import 'package:toolbox/data/model/server/dist.dart'; import 'package:toolbox/data/model/server/dist.dart';
import 'package:toolbox/data/res/provider.dart'; import 'package:toolbox/data/res/provider.dart';
import '../../core/route.dart'; import '../../core/route.dart';
import '../../core/utils/misc.dart'; import '../../core/utils/misc.dart';
import '../../core/utils/platform.dart';
import '../../core/utils/server.dart'; import '../../core/utils/server.dart';
import '../../data/model/app/menu.dart'; import '../../data/model/app/menu.dart';
import '../../data/model/pkg/upgrade_info.dart'; import '../../data/model/pkg/upgrade_info.dart';