mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
opt.
This commit is contained in:
@@ -24,6 +24,9 @@ linter:
|
|||||||
rules:
|
rules:
|
||||||
library_private_types_in_public_api: false
|
library_private_types_in_public_api: false
|
||||||
use_build_context_synchronously: false
|
use_build_context_synchronously: false
|
||||||
|
prefer_final_locals: true
|
||||||
|
unnecessary_parenthesis: true
|
||||||
|
implicit_call_tearoffs: true
|
||||||
# avoid_print: false # Uncomment to disable the `avoid_print` rule
|
# avoid_print: false # Uncomment to disable the `avoid_print` rule
|
||||||
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
|
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
|
||||||
|
|
||||||
|
|||||||
@@ -586,7 +586,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CURRENT_PROJECT_VERSION = 682;
|
CURRENT_PROJECT_VERSION = 683;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||||
@@ -596,7 +596,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.682;
|
MARKETING_VERSION = 1.0.683;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
@@ -720,7 +720,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CURRENT_PROJECT_VERSION = 682;
|
CURRENT_PROJECT_VERSION = 683;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||||
@@ -730,7 +730,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.682;
|
MARKETING_VERSION = 1.0.683;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
@@ -748,7 +748,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CURRENT_PROJECT_VERSION = 682;
|
CURRENT_PROJECT_VERSION = 683;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||||
@@ -758,7 +758,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.682;
|
MARKETING_VERSION = 1.0.683;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
@@ -779,7 +779,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 682;
|
CURRENT_PROJECT_VERSION = 683;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
@@ -792,7 +792,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.682;
|
MARKETING_VERSION = 1.0.683;
|
||||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||||
@@ -818,7 +818,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 682;
|
CURRENT_PROJECT_VERSION = 683;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
@@ -831,7 +831,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.682;
|
MARKETING_VERSION = 1.0.683;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
@@ -854,7 +854,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 682;
|
CURRENT_PROJECT_VERSION = 683;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
@@ -867,7 +867,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.682;
|
MARKETING_VERSION = 1.0.683;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
@@ -890,7 +890,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 682;
|
CURRENT_PROJECT_VERSION = 683;
|
||||||
DEVELOPMENT_ASSET_PATHS = "";
|
DEVELOPMENT_ASSET_PATHS = "";
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
@@ -902,7 +902,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.682;
|
MARKETING_VERSION = 1.0.683;
|
||||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
||||||
@@ -931,7 +931,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 682;
|
CURRENT_PROJECT_VERSION = 683;
|
||||||
DEVELOPMENT_ASSET_PATHS = "";
|
DEVELOPMENT_ASSET_PATHS = "";
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
@@ -943,7 +943,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.682;
|
MARKETING_VERSION = 1.0.683;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
||||||
PRODUCT_NAME = ServerBox;
|
PRODUCT_NAME = ServerBox;
|
||||||
@@ -969,7 +969,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 682;
|
CURRENT_PROJECT_VERSION = 683;
|
||||||
DEVELOPMENT_ASSET_PATHS = "";
|
DEVELOPMENT_ASSET_PATHS = "";
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
@@ -981,7 +981,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.682;
|
MARKETING_VERSION = 1.0.683;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
||||||
PRODUCT_NAME = ServerBox;
|
PRODUCT_NAME = ServerBox;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ enum _BuildMode {
|
|||||||
profile,
|
profile,
|
||||||
}
|
}
|
||||||
|
|
||||||
final _buildMode = (() {
|
final _buildMode = () {
|
||||||
if (const bool.fromEnvironment('dart.vm.product')) {
|
if (const bool.fromEnvironment('dart.vm.product')) {
|
||||||
return _BuildMode.release;
|
return _BuildMode.release;
|
||||||
}
|
}
|
||||||
@@ -16,7 +16,7 @@ final _buildMode = (() {
|
|||||||
return true;
|
return true;
|
||||||
}());
|
}());
|
||||||
return result;
|
return result;
|
||||||
}());
|
}();
|
||||||
|
|
||||||
class BuildMode {
|
class BuildMode {
|
||||||
static bool isDebug = (_buildMode == _BuildMode.debug);
|
static bool isDebug = (_buildMode == _BuildMode.debug);
|
||||||
|
|||||||
@@ -15,4 +15,18 @@ extension StringX on String {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Uint8List get uint8List => Uint8List.fromList(utf8.encode(this));
|
Uint8List get uint8List => Uint8List.fromList(utf8.encode(this));
|
||||||
|
|
||||||
|
/// Upper the first letter.
|
||||||
|
String get upperFirst {
|
||||||
|
if (isEmpty) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
final runes = codeUnits;
|
||||||
|
if (runes[0] >= 97 && runes[0] <= 122) {
|
||||||
|
final origin = String.fromCharCode(runes[0]);
|
||||||
|
final upper = origin.toUpperCase();
|
||||||
|
return replaceFirst(origin, upper);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
|
import 'package:toolbox/core/extension/stringx.dart';
|
||||||
|
|
||||||
enum OS {
|
enum OS {
|
||||||
android,
|
android,
|
||||||
@@ -12,7 +13,7 @@ enum OS {
|
|||||||
fuchsia,
|
fuchsia,
|
||||||
unknown;
|
unknown;
|
||||||
|
|
||||||
static final _os = () {
|
static final type = () {
|
||||||
if (kIsWeb) {
|
if (kIsWeb) {
|
||||||
return OS.web;
|
return OS.web;
|
||||||
}
|
}
|
||||||
@@ -37,48 +38,26 @@ enum OS {
|
|||||||
return OS.unknown;
|
return OS.unknown;
|
||||||
}();
|
}();
|
||||||
|
|
||||||
static OS get type => _os;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() => switch (this) {
|
||||||
switch (this) {
|
OS.macos => 'macOS',
|
||||||
case OS.android:
|
OS.ios => 'iOS',
|
||||||
return 'Android';
|
final val => val.name.upperFirst,
|
||||||
case OS.ios:
|
};
|
||||||
return 'iOS';
|
|
||||||
case OS.linux:
|
|
||||||
return 'Linux';
|
|
||||||
case OS.macos:
|
|
||||||
return 'macOS';
|
|
||||||
case OS.windows:
|
|
||||||
return 'Windows';
|
|
||||||
case OS.web:
|
|
||||||
return 'Web';
|
|
||||||
case OS.fuchsia:
|
|
||||||
return 'Fuchsia';
|
|
||||||
case OS.unknown:
|
|
||||||
return 'Unknown';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Whether has platform specific settings.
|
/// Whether has platform specific settings.
|
||||||
static bool get hasSettings {
|
static final hasSpecSetting = switch (type) {
|
||||||
switch (type) {
|
OS.android || OS.ios => true,
|
||||||
case OS.android:
|
_ => false,
|
||||||
case OS.ios:
|
};
|
||||||
return true;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool get isAndroid => OS.type == OS.android;
|
final isAndroid = OS.type == OS.android;
|
||||||
bool get isIOS => OS.type == OS.ios;
|
final isIOS = OS.type == OS.ios;
|
||||||
bool get isLinux => OS.type == OS.linux;
|
final isLinux = OS.type == OS.linux;
|
||||||
bool get isMacOS => OS.type == OS.macos;
|
final isMacOS = OS.type == OS.macos;
|
||||||
bool get isWindows => OS.type == OS.windows;
|
final isWindows = OS.type == OS.windows;
|
||||||
bool get isWeb => OS.type == OS.web;
|
final isWeb = OS.type == OS.web;
|
||||||
bool get isMobile => OS.type == OS.ios || OS.type == OS.android;
|
final isMobile = OS.type == OS.ios || OS.type == OS.android;
|
||||||
bool get isDesktop =>
|
final isDesktop =
|
||||||
OS.type == OS.linux || OS.type == OS.macos || OS.type == OS.windows;
|
OS.type == OS.linux || OS.type == OS.macos || OS.type == OS.windows;
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import 'package:toolbox/data/res/store.dart';
|
|||||||
import 'package:webdav_client/webdav_client.dart';
|
import 'package:webdav_client/webdav_client.dart';
|
||||||
|
|
||||||
abstract final class Webdav {
|
abstract final class Webdav {
|
||||||
|
/// Some WebDAV provider only support non-root path
|
||||||
static const _prefix = 'srvbox/';
|
static const _prefix = 'srvbox/';
|
||||||
|
|
||||||
static var _client = WebdavClient(
|
static var _client = WebdavClient(
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ Future<void> loadFontFile(String localPath) async {
|
|||||||
if (name == null) return;
|
if (name == null) return;
|
||||||
final file = File(localPath);
|
final file = File(localPath);
|
||||||
if (!await file.exists()) return;
|
if (!await file.exists()) return;
|
||||||
var fontLoader = FontLoader(name);
|
final fontLoader = FontLoader(name);
|
||||||
fontLoader.addFont(file.readAsBytes().byteData);
|
fontLoader.addFont(file.readAsBytes().byteData);
|
||||||
await fontLoader.load();
|
await fontLoader.load();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,8 +37,8 @@ class DiskIO extends TimeSeq<DiskIOPiece> {
|
|||||||
final sectorsRead = now.sectorsRead - pre.sectorsRead;
|
final sectorsRead = now.sectorsRead - pre.sectorsRead;
|
||||||
final sectorsWrite = now.sectorsWrite - pre.sectorsWrite;
|
final sectorsWrite = now.sectorsWrite - pre.sectorsWrite;
|
||||||
final time = now.time - pre.time;
|
final time = now.time - pre.time;
|
||||||
final read = (sectorsRead / time * 512);
|
final read = sectorsRead / time * 512;
|
||||||
final write = (sectorsWrite / time * 512);
|
final write = sectorsWrite / time * 512;
|
||||||
return (read, write);
|
return (read, write);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -77,19 +77,19 @@ class SftpReqStatus {
|
|||||||
void onNotify(dynamic event) {
|
void onNotify(dynamic event) {
|
||||||
var shouldDispose = false;
|
var shouldDispose = false;
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case SftpWorkerStatus val:
|
case final SftpWorkerStatus val:
|
||||||
status = val;
|
status = val;
|
||||||
if (status == SftpWorkerStatus.finished) {
|
if (status == SftpWorkerStatus.finished) {
|
||||||
dispose();
|
dispose();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case double val:
|
case final double val:
|
||||||
progress = val;
|
progress = val;
|
||||||
break;
|
break;
|
||||||
case int val:
|
case final int val:
|
||||||
size = val;
|
size = val;
|
||||||
break;
|
break;
|
||||||
case Duration d:
|
case final Duration d:
|
||||||
spentTime = d;
|
spentTime = d;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ Future<void> isolateMessageHandler(
|
|||||||
SendErrorFunction sendError,
|
SendErrorFunction sendError,
|
||||||
) async {
|
) async {
|
||||||
switch (data) {
|
switch (data) {
|
||||||
case SftpReq val:
|
case final SftpReq val:
|
||||||
switch (val.type) {
|
switch (val.type) {
|
||||||
case SftpReqType.download:
|
case SftpReqType.download:
|
||||||
await _download(data, mainSendPort, sendError);
|
await _download(data, mainSendPort, sendError);
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
class BuildData {
|
class BuildData {
|
||||||
static const String name = "ServerBox";
|
static const String name = "ServerBox";
|
||||||
static const int build = 682;
|
static const int build = 683;
|
||||||
static const String engine = "3.16.4";
|
static const String engine = "3.16.4";
|
||||||
static const String buildAt = "2023-12-19 15:18:22";
|
static const String buildAt = "2023-12-19 15:25:07";
|
||||||
static const int modifications = 10;
|
static const int modifications = 1;
|
||||||
static const int script = 32;
|
static const int script = 32;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,11 +34,12 @@ class DockerManagePage extends StatefulWidget {
|
|||||||
|
|
||||||
class _DockerManagePageState extends State<DockerManagePage> {
|
class _DockerManagePageState extends State<DockerManagePage> {
|
||||||
final _textController = TextEditingController();
|
final _textController = TextEditingController();
|
||||||
|
final _docker = Pros.docker;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
super.dispose();
|
super.dispose();
|
||||||
Pros.docker.clear();
|
_docker.clear();
|
||||||
_textController.dispose();
|
_textController.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,7 +50,7 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
|||||||
if (client == null) {
|
if (client == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Pros.docker
|
_docker
|
||||||
..init(
|
..init(
|
||||||
client,
|
client,
|
||||||
widget.spi.user,
|
widget.spi.user,
|
||||||
@@ -71,7 +72,7 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
|||||||
IconButton(
|
IconButton(
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
context.showLoadingDialog();
|
context.showLoadingDialog();
|
||||||
await Pros.docker.refresh();
|
await _docker.refresh();
|
||||||
context.pop();
|
context.pop();
|
||||||
},
|
},
|
||||||
icon: const Icon(Icons.refresh),
|
icon: const Icon(Icons.refresh),
|
||||||
@@ -79,7 +80,7 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
body: _buildMain(),
|
body: _buildMain(),
|
||||||
floatingActionButton: Pros.docker.error == null ? _buildFAB() : null,
|
floatingActionButton: _docker.error == null ? _buildFAB() : null,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -156,7 +157,7 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
|||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
context.pop();
|
context.pop();
|
||||||
context.showLoadingDialog();
|
context.showLoadingDialog();
|
||||||
final result = await Pros.docker.run(cmd);
|
final result = await _docker.run(cmd);
|
||||||
context.pop();
|
context.pop();
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
context.showSnackBar(result.message ?? l10n.unknownError);
|
context.showSnackBar(result.message ?? l10n.unknownError);
|
||||||
@@ -182,7 +183,7 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildMain() {
|
Widget _buildMain() {
|
||||||
if (Pros.docker.error != null && Pros.docker.items == null) {
|
if (_docker.error != null && _docker.items == null) {
|
||||||
return SizedBox.expand(
|
return SizedBox.expand(
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
@@ -193,18 +194,18 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
|||||||
size: 37,
|
size: 37,
|
||||||
),
|
),
|
||||||
const SizedBox(height: 27),
|
const SizedBox(height: 27),
|
||||||
Text(Pros.docker.error?.message ?? l10n.unknownError),
|
Text(_docker.error?.message ?? l10n.unknownError),
|
||||||
const SizedBox(height: 27),
|
const SizedBox(height: 27),
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.all(17),
|
padding: const EdgeInsets.all(17),
|
||||||
child: _buildSolution(Pros.docker.error!),
|
child: _buildSolution(_docker.error!),
|
||||||
),
|
),
|
||||||
_buildEditHost(),
|
_buildEditHost(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (Pros.docker.items == null || Pros.docker.images == null) {
|
if (_docker.items == null || _docker.images == null) {
|
||||||
return UIs.centerLoading;
|
return UIs.centerLoading;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -225,10 +226,11 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
|||||||
return ExpandTile(
|
return ExpandTile(
|
||||||
title: Text(l10n.imagesList),
|
title: Text(l10n.imagesList),
|
||||||
subtitle: Text(
|
subtitle: Text(
|
||||||
l10n.dockerImagesFmt(Pros.docker.images!.length),
|
l10n.dockerImagesFmt(_docker.images!.length),
|
||||||
style: UIs.textGrey,
|
style: UIs.textGrey,
|
||||||
),
|
),
|
||||||
children: Pros.docker.images?.map(_buildImageItem).toList() ?? [],
|
initiallyExpanded: (_docker.images?.length ?? 0) <= 3,
|
||||||
|
children: _docker.images?.map(_buildImageItem).toList() ?? [],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -280,7 +282,7 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
|||||||
child: CircularProgressIndicator(),
|
child: CircularProgressIndicator(),
|
||||||
),
|
),
|
||||||
UIs.height13,
|
UIs.height13,
|
||||||
Text(Pros.docker.runLog ?? '...'),
|
Text(_docker.runLog ?? '...'),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@@ -321,8 +323,8 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
|||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
Text(Pros.docker.edition ?? l10n.unknown),
|
Text(_docker.edition ?? l10n.unknown),
|
||||||
Text(Pros.docker.version ?? l10n.unknown),
|
Text(_docker.version ?? l10n.unknown),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@@ -380,7 +382,7 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
|||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
context.pop();
|
context.pop();
|
||||||
context.showLoadingDialog();
|
context.showLoadingDialog();
|
||||||
final result = await Pros.docker.delete(
|
final result = await _docker.delete(
|
||||||
dItem.containerId,
|
dItem.containerId,
|
||||||
force,
|
force,
|
||||||
);
|
);
|
||||||
@@ -399,7 +401,7 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
|||||||
break;
|
break;
|
||||||
case DockerMenuType.start:
|
case DockerMenuType.start:
|
||||||
context.showLoadingDialog();
|
context.showLoadingDialog();
|
||||||
final result = await Pros.docker.start(dItem.containerId);
|
final result = await _docker.start(dItem.containerId);
|
||||||
context.pop();
|
context.pop();
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
context.showRoundDialog(
|
context.showRoundDialog(
|
||||||
@@ -410,7 +412,7 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
|||||||
break;
|
break;
|
||||||
case DockerMenuType.stop:
|
case DockerMenuType.stop:
|
||||||
context.showLoadingDialog();
|
context.showLoadingDialog();
|
||||||
final result = await Pros.docker.stop(dItem.containerId);
|
final result = await _docker.stop(dItem.containerId);
|
||||||
context.pop();
|
context.pop();
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
context.showRoundDialog(
|
context.showRoundDialog(
|
||||||
@@ -421,7 +423,7 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
|||||||
break;
|
break;
|
||||||
case DockerMenuType.restart:
|
case DockerMenuType.restart:
|
||||||
context.showLoadingDialog();
|
context.showLoadingDialog();
|
||||||
final result = await Pros.docker.restart(dItem.containerId);
|
final result = await _docker.restart(dItem.containerId);
|
||||||
context.pop();
|
context.pop();
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
context.showRoundDialog(
|
context.showRoundDialog(
|
||||||
@@ -476,8 +478,8 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
|||||||
|
|
||||||
Widget _buildEditHost() {
|
Widget _buildEditHost() {
|
||||||
final children = <Widget>[];
|
final children = <Widget>[];
|
||||||
final emptyImgs = Pros.docker.images?.isEmpty ?? false;
|
final emptyImgs = _docker.images?.isEmpty ?? false;
|
||||||
final emptyPs = Pros.docker.items?.isEmpty ?? false;
|
final emptyPs = _docker.items?.isEmpty ?? false;
|
||||||
if (emptyPs && emptyImgs) {
|
if (emptyPs && emptyImgs) {
|
||||||
children.add(Padding(
|
children.add(Padding(
|
||||||
padding: const EdgeInsets.fromLTRB(17, 17, 17, 0),
|
padding: const EdgeInsets.fromLTRB(17, 17, 17, 0),
|
||||||
@@ -522,6 +524,6 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
|||||||
void _onSaveDockerHost(String val) {
|
void _onSaveDockerHost(String val) {
|
||||||
context.pop();
|
context.pop();
|
||||||
Stores.docker.put(widget.spi.id, val.trim());
|
Stores.docker.put(widget.spi.id, val.trim());
|
||||||
Pros.docker.refresh();
|
_docker.refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ class _FullScreenPageState extends State<FullScreenPage> with AfterLayoutMixin {
|
|||||||
double get _offset {
|
double get _offset {
|
||||||
// based on screen width
|
// based on screen width
|
||||||
final x = _screenWidth * 0.03;
|
final x = _screenWidth * 0.03;
|
||||||
var r = Random().nextDouble();
|
final r = Random().nextDouble();
|
||||||
final n = Random().nextBool() ? -1 : 1;
|
final n = Random().nextBool() ? -1 : 1;
|
||||||
return n * x * r;
|
return n * x * r;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -580,7 +580,7 @@ class _ServerPageState extends State<ServerPage>
|
|||||||
if (Stores.setting.moveOutServerTabFuncBtns.fetch() &&
|
if (Stores.setting.moveOutServerTabFuncBtns.fetch() &&
|
||||||
// Discussion #146
|
// Discussion #146
|
||||||
!Stores.setting.serverTabUseOldUI.fetch()) {
|
!Stores.setting.serverTabUseOldUI.fetch()) {
|
||||||
return 135;
|
return 132;
|
||||||
}
|
}
|
||||||
return 106;
|
return 106;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ class _SettingPageState extends State<SettingPage> {
|
|||||||
];
|
];
|
||||||
|
|
||||||
/// Platform specific settings
|
/// Platform specific settings
|
||||||
if (OS.hasSettings) {
|
if (OS.hasSpecSetting) {
|
||||||
children.add(_buildPlatformSetting());
|
children.add(_buildPlatformSetting());
|
||||||
}
|
}
|
||||||
return Column(
|
return Column(
|
||||||
|
|||||||
@@ -134,10 +134,10 @@ class _LocalStoragePageState extends State<LocalStoragePage> {
|
|||||||
itemCount: files.length,
|
itemCount: files.length,
|
||||||
padding: const EdgeInsets.symmetric(vertical: 3, horizontal: 7),
|
padding: const EdgeInsets.symmetric(vertical: 3, horizontal: 7),
|
||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
var file = files[index];
|
final file = files[index];
|
||||||
var fileName = file.path.split('/').last;
|
final fileName = file.path.split('/').last;
|
||||||
var stat = file.statSync();
|
final stat = file.statSync();
|
||||||
var isDir = stat.type == FileSystemEntityType.directory;
|
final isDir = stat.type == FileSystemEntityType.directory;
|
||||||
|
|
||||||
return CardX(
|
return CardX(
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
|
|||||||
|
|
||||||
Widget _buildAddBtn() {
|
Widget _buildAddBtn() {
|
||||||
return IconButton(
|
return IconButton(
|
||||||
onPressed: (() => context.showRoundDialog(
|
onPressed: () => context.showRoundDialog(
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
@@ -176,7 +176,7 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
)),
|
),
|
||||||
icon: const Icon(Icons.add),
|
icon: const Icon(Icons.add),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,13 +21,13 @@ class OmitStartText extends StatelessWidget {
|
|||||||
int len = 0;
|
int len = 0;
|
||||||
for (; !exceeded && len < text.length; len++) {
|
for (; !exceeded && len < text.length; len++) {
|
||||||
// Build the textspan
|
// Build the textspan
|
||||||
var span = TextSpan(
|
final span = TextSpan(
|
||||||
text: 'A' * 7 + text.substring(text.length - len),
|
text: 'A' * 7 + text.substring(text.length - len),
|
||||||
style: style ?? Theme.of(context).textTheme.bodyMedium,
|
style: style ?? Theme.of(context).textTheme.bodyMedium,
|
||||||
);
|
);
|
||||||
|
|
||||||
// Use a textpainter to determine if it will exceed max lines
|
// Use a textpainter to determine if it will exceed max lines
|
||||||
var tp = TextPainter(
|
final tp = TextPainter(
|
||||||
maxLines: maxLines ?? 1,
|
maxLines: maxLines ?? 1,
|
||||||
textDirection: TextDirection.ltr,
|
textDirection: TextDirection.ltr,
|
||||||
text: span,
|
text: span,
|
||||||
|
|||||||
@@ -205,7 +205,7 @@ Future<void> _gotoSSH(
|
|||||||
extraArgs.addAll(["-i", path]);
|
extraArgs.addAll(["-i", path]);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> sshCommand = ["ssh", "${spi.user}@${spi.ip}"] + extraArgs;
|
final sshCommand = ["ssh", "${spi.user}@${spi.ip}"] + extraArgs;
|
||||||
final system = Platform.operatingSystem;
|
final system = Platform.operatingSystem;
|
||||||
switch (system) {
|
switch (system) {
|
||||||
case "windows":
|
case "windows":
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class StoreSwitch extends StatelessWidget {
|
|||||||
return Switch(
|
return Switch(
|
||||||
value: value,
|
value: value,
|
||||||
onChanged: (value) async {
|
onChanged: (value) async {
|
||||||
if (validator != null && validator?.call(value) != true) return;
|
if (validator?.call(value) == false) return;
|
||||||
await callback?.call(value);
|
await callback?.call(value);
|
||||||
prop.put(value);
|
prop.put(value);
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user