mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
fix: backup restore failed
This commit is contained in:
@@ -741,6 +741,12 @@ abstract class S {
|
|||||||
/// **'Open'**
|
/// **'Open'**
|
||||||
String get open;
|
String get open;
|
||||||
|
|
||||||
|
/// No description provided for @paste.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Paste'**
|
||||||
|
String get paste;
|
||||||
|
|
||||||
/// No description provided for @path.
|
/// No description provided for @path.
|
||||||
///
|
///
|
||||||
/// In en, this message translates to:
|
/// In en, this message translates to:
|
||||||
|
|||||||
@@ -350,6 +350,9 @@ class SEn extends S {
|
|||||||
@override
|
@override
|
||||||
String get open => 'Open';
|
String get open => 'Open';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get paste => 'Paste';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get path => 'Path';
|
String get path => 'Path';
|
||||||
|
|
||||||
|
|||||||
@@ -350,6 +350,9 @@ class SZh extends S {
|
|||||||
@override
|
@override
|
||||||
String get open => '打开';
|
String get open => '打开';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get paste => '粘贴';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get path => '路径';
|
String get path => '路径';
|
||||||
|
|
||||||
|
|||||||
@@ -359,7 +359,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 = 255;
|
CURRENT_PROJECT_VERSION = 256;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||||
@@ -367,7 +367,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.255;
|
MARKETING_VERSION = 1.0.256;
|
||||||
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";
|
||||||
@@ -490,7 +490,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 = 255;
|
CURRENT_PROJECT_VERSION = 256;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||||
@@ -498,7 +498,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.255;
|
MARKETING_VERSION = 1.0.256;
|
||||||
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";
|
||||||
@@ -515,7 +515,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 = 255;
|
CURRENT_PROJECT_VERSION = 256;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||||
@@ -523,7 +523,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.255;
|
MARKETING_VERSION = 1.0.256;
|
||||||
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";
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ class Backup {
|
|||||||
keys = (json['keys'] as List)
|
keys = (json['keys'] as List)
|
||||||
.map((e) => PrivateKeyInfo.fromJson(e))
|
.map((e) => PrivateKeyInfo.fromJson(e))
|
||||||
.toList(),
|
.toList(),
|
||||||
dockerHosts = json['dockerHosts'];
|
dockerHosts = json['dockerHosts'] ?? {};
|
||||||
|
|
||||||
Map<String, dynamic> toJson() => {
|
Map<String, dynamic> toJson() => {
|
||||||
'version': version,
|
'version': version,
|
||||||
|
|||||||
@@ -12,4 +12,4 @@ class VirtualKey {
|
|||||||
{this.key, this.toggleable = false, this.icon, this.func});
|
{this.key, this.toggleable = false, this.icon, this.func});
|
||||||
}
|
}
|
||||||
|
|
||||||
enum VirtualKeyFunc { toggleIME, backspace, copy, paste }
|
enum VirtualKeyFunc { toggleIME, backspace, copy, paste, snippet }
|
||||||
|
|||||||
@@ -2,8 +2,9 @@
|
|||||||
|
|
||||||
class BuildData {
|
class BuildData {
|
||||||
static const String name = "ServerBox";
|
static const String name = "ServerBox";
|
||||||
static const int build = 255;
|
static const int build = 256;
|
||||||
static const String engine = "Flutter 3.7.7 • channel stable • https://github.com/flutter/flutter.git\nFramework • revision 2ad6cd72c0 (4 weeks ago) • 2023-03-08 09:41:59 -0800\nEngine • revision 1837b5be5f\nTools • Dart 2.19.4 • DevTools 2.20.1\n";
|
static const String engine =
|
||||||
static const String buildAt = "2023-04-05 15:03:38.565037";
|
"Flutter 3.7.7 • channel stable • https://github.com/flutter/flutter.git\nFramework • revision 2ad6cd72c0 (4 weeks ago) • 2023-03-08 09:41:59 -0800\nEngine • revision 1837b5be5f\nTools • Dart 2.19.4 • DevTools 2.20.1\n";
|
||||||
|
static const String buildAt = "2023-04-05 15:16:00.949501";
|
||||||
static const int modifications = 2;
|
static const int modifications = 2;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ var virtualKeys = [
|
|||||||
// 'Del',
|
// 'Del',
|
||||||
// key: TerminalKey.delete,
|
// key: TerminalKey.delete,
|
||||||
// ),
|
// ),
|
||||||
VirtualKey('Paste', func: VirtualKeyFunc.paste, icon: Icons.paste),
|
//VirtualKey('Paste', func: VirtualKeyFunc.paste, icon: Icons.paste),
|
||||||
|
VirtualKey('Snippet', func: VirtualKeyFunc.snippet, icon: Icons.code),
|
||||||
VirtualKey('Tab', key: TerminalKey.tab),
|
VirtualKey('Tab', key: TerminalKey.tab),
|
||||||
VirtualKey('Ctrl', key: TerminalKey.control, toggleable: true),
|
VirtualKey('Ctrl', key: TerminalKey.control, toggleable: true),
|
||||||
VirtualKey('Left', key: TerminalKey.arrowLeft, icon: Icons.arrow_back),
|
VirtualKey('Left', key: TerminalKey.arrowLeft, icon: Icons.arrow_back),
|
||||||
|
|||||||
@@ -107,6 +107,7 @@
|
|||||||
"onServerDetailPage": "On server detail page",
|
"onServerDetailPage": "On server detail page",
|
||||||
"onlyIOS": "Only valid on iOS",
|
"onlyIOS": "Only valid on iOS",
|
||||||
"open": "Open",
|
"open": "Open",
|
||||||
|
"paste": "Paste",
|
||||||
"path": "Path",
|
"path": "Path",
|
||||||
"pickFile": "Pick file",
|
"pickFile": "Pick file",
|
||||||
"ping": "Ping",
|
"ping": "Ping",
|
||||||
|
|||||||
@@ -107,6 +107,7 @@
|
|||||||
"onServerDetailPage": "在服务器详情页",
|
"onServerDetailPage": "在服务器详情页",
|
||||||
"onlyIOS": "仅在iOS上有效",
|
"onlyIOS": "仅在iOS上有效",
|
||||||
"open": "打开",
|
"open": "打开",
|
||||||
|
"paste": "粘贴",
|
||||||
"path": "路径",
|
"path": "路径",
|
||||||
"pickFile": "选择文件",
|
"pickFile": "选择文件",
|
||||||
"ping": "Ping",
|
"ping": "Ping",
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import 'package:flutter/foundation.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||||
|
import 'package:toolbox/core/utils/misc.dart';
|
||||||
|
|
||||||
import '../../core/extension/colorx.dart';
|
import '../../core/extension/colorx.dart';
|
||||||
import '../../core/utils/ui.dart';
|
import '../../core/utils/ui.dart';
|
||||||
@@ -196,14 +197,19 @@ class BackupPage extends StatelessWidget {
|
|||||||
_dockerHosts.setDockerHost(k, backup.dockerHosts[k]!);
|
_dockerHosts.setDockerHost(k, backup.dockerHosts[k]!);
|
||||||
}
|
}
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
showSnackBar(context, Text(s.restoreSuccess));
|
showSnackBarWithAction(
|
||||||
|
context,
|
||||||
|
s.restoreSuccess,
|
||||||
|
s.restart,
|
||||||
|
() => rebuildAll(context),
|
||||||
|
);
|
||||||
},
|
},
|
||||||
child: Text(s.ok),
|
child: Text(s.ok),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
showSnackBar(context, Text(s.invalidJson));
|
showSnackBar(context, Text(e.toString()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -274,6 +274,10 @@ class _SSHPageState extends State<SSHPage> {
|
|||||||
case VirtualKeyFunc.copy:
|
case VirtualKeyFunc.copy:
|
||||||
copy(terminalSelected);
|
copy(terminalSelected);
|
||||||
break;
|
break;
|
||||||
|
case VirtualKeyFunc.snippet:
|
||||||
|
// TODO: Handle this case.
|
||||||
|
// _showSnippet();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -300,27 +304,27 @@ class _SSHPageState extends State<SSHPage> {
|
|||||||
}
|
}
|
||||||
final selected = terminalSelected;
|
final selected = terminalSelected;
|
||||||
if (selected.trim().isEmpty) {
|
if (selected.trim().isEmpty) {
|
||||||
// _menuController.show(
|
_menuController.show(
|
||||||
// context: context,
|
context: context,
|
||||||
// contextMenuBuilder: (context) {
|
contextMenuBuilder: (context) {
|
||||||
// return TextSelectionToolbar(
|
return TextSelectionToolbar(
|
||||||
// anchorAbove: detail.globalPosition,
|
anchorAbove: details.globalPosition,
|
||||||
// anchorBelow: detail.globalPosition,
|
anchorBelow: details.globalPosition,
|
||||||
// children: [
|
children: [
|
||||||
// TextButton(
|
TextButton(
|
||||||
// child: Text(
|
child: Text(
|
||||||
// 'Paste',
|
_s.paste,
|
||||||
// style: _menuTextStyle,
|
style: _menuTextStyle,
|
||||||
// ),
|
),
|
||||||
// onPressed: () async {
|
onPressed: () async {
|
||||||
// _paste();
|
_paste();
|
||||||
// _menuController.remove();
|
_menuController.remove();
|
||||||
// },
|
},
|
||||||
// )
|
)
|
||||||
// ],
|
],
|
||||||
// );
|
);
|
||||||
// },
|
},
|
||||||
// );
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
_menuController.show(
|
_menuController.show(
|
||||||
|
|||||||
@@ -25,10 +25,11 @@ Widget buildPicker(List<Widget> items, Function(int idx) onSelected) {
|
|||||||
onSelectedItemChanged: (idx) => onSelected(idx),
|
onSelectedItemChanged: (idx) => onSelected(idx),
|
||||||
physics: const FixedExtentScrollPhysics(),
|
physics: const FixedExtentScrollPhysics(),
|
||||||
childDelegate: ListWheelChildBuilderDelegate(
|
childDelegate: ListWheelChildBuilderDelegate(
|
||||||
builder: (context, index) => Center(
|
builder: (context, index) => Center(
|
||||||
child: items[index],
|
child: items[index],
|
||||||
),
|
),
|
||||||
childCount: items.length),
|
childCount: items.length,
|
||||||
|
),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user