- add help for ssh virt keys
- rm unused lib
This commit is contained in:
lollipopkit
2023-07-29 16:24:47 +08:00
parent 1163f2e418
commit 7f4dcc1357
31 changed files with 159 additions and 172 deletions

View File

@@ -76,18 +76,6 @@ class _SFTPDownloadedPageState extends State<SFTPDownloadedPage> {
bottomNavigationBar: SafeArea(
child: _buildPath(),
),
floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,
floatingActionButton: FloatingActionButton(
onPressed: (() {
if (_path!.path == _prefixPath) {
showSnackBar(context, Text(_s.alreadyLastDir));
return;
}
_path!.update('..');
setState(() {});
}),
child: const Icon(Icons.keyboard_arrow_left),
),
);
}
@@ -112,10 +100,22 @@ class _SFTPDownloadedPageState extends State<SFTPDownloadedPage> {
}
final dir = Directory(_path!.path);
final files = dir.listSync();
final canGoBack = _path!.path != _prefixPath;
return ListView.builder(
itemCount: files.length,
itemCount: canGoBack ? files.length + 1 : files.length,
padding: const EdgeInsets.symmetric(vertical: 3, horizontal: 7),
itemBuilder: (context, index) {
if (index == 0 && canGoBack) {
return RoundRectCard(ListTile(
leading: const Icon(Icons.keyboard_arrow_left),
title: const Text('..'),
onTap: () {
_path!.update('..');
setState(() {});
},
));
}
index = canGoBack ? index - 1 : index;
var file = files[index];
var fileName = file.path.split('/').last;
var stat = file.statSync();

View File

@@ -39,11 +39,9 @@ class _SSHPageState extends State<SSHPage> {
final _setting = locator<SettingStore>();
late final _terminal = Terminal(inputHandler: _keyboard);
final TerminalController _terminalController = TerminalController();
final ContextMenuController _menuController = ContextMenuController();
final List<List<VirtKey>> _virtKeysList = [];
late MediaQueryData _media;
late TextStyle _menuTextStyle;
late S _s;
late TerminalStyle _terminalStyle;
late TerminalTheme _terminalTheme;
@@ -75,7 +73,6 @@ class _SSHPageState extends State<SSHPage> {
super.didChangeDependencies();
_isDark = isDarkMode(context);
_media = MediaQuery.of(context);
_menuTextStyle = TextStyle(color: contentColor.resolve(context));
_s = S.of(context)!;
_terminalTheme = _isDark ? termDarkTheme : termLightTheme;
// Calculate virtkey width / height
@@ -118,8 +115,7 @@ class _SSHPageState extends State<SSHPage> {
textStyle: _terminalStyle,
theme: _terminalTheme,
deleteDetection: isIOS,
onTapUp: _onTapUp,
autoFocus: true,
autofocus: true,
keyboardAppearance: _isDark ? Brightness.dark : Brightness.light,
),
);
@@ -231,13 +227,12 @@ class _SSHPageState extends State<SSHPage> {
case VirtualKeyFunc.backspace:
_terminal.keyInput(TerminalKey.backspace);
break;
case VirtualKeyFunc.paste:
_paste();
break;
case VirtualKeyFunc.copy:
case VirtualKeyFunc.clipboard:
final selected = terminalSelected;
if (selected != null) {
copy2Clipboard(selected);
} else {
_paste();
}
break;
case VirtualKeyFunc.snippet:
@@ -290,58 +285,12 @@ class _SSHPageState extends State<SSHPage> {
return _terminal.buffer.getText(range);
}
void _onTapUp(TapUpDetails details, CellOffset offset) {
if (_menuController.isShown) {
_menuController.remove();
return;
}
final selected = terminalSelected;
final children = <Widget>[
// TextButton(
// onPressed: () {
// _paste();
// },
// child: Text(_s.paste),
// ),
];
if (selected?.trim().isNotEmpty ?? false) {
children.add(
TextButton(
child: Text(
_s.copy,
style: _menuTextStyle,
),
onPressed: () {
_terminalController.setSelection(null);
if (selected != null) {
copy2Clipboard(selected);
}
_menuController.remove();
},
),
);
}
if (children.isEmpty) {
return;
}
_menuController.show(
context: context,
contextMenuBuilder: (context) {
return TextSelectionToolbar(
anchorAbove: details.globalPosition,
anchorBelow: details.globalPosition,
children: children,
);
},
);
}
void _write(String p0) {
_terminal.write('$p0\r\n');
}
void _initVirtKeys() {
final virtKeys = _setting.sshVirtKeys.fetch()!;
final virtKeys = List<VirtKey>.from(_setting.sshVirtKeys.fetchRaw());
for (int len = 0; len < virtKeys.length; len += 7) {
if (len + 7 > virtKeys.length) {

View File

@@ -1,12 +1,13 @@
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:nil/nil.dart';
import 'package:toolbox/core/extension/order.dart';
import 'package:toolbox/core/utils/platform.dart';
import 'package:toolbox/core/utils/ui.dart';
import 'package:toolbox/data/model/ssh/virtual_key.dart';
import 'package:toolbox/data/res/ui.dart';
import 'package:toolbox/data/store/setting.dart';
import 'package:toolbox/locator.dart';
import 'package:toolbox/view/widget/round_rect_card.dart';
class SSHVirtKeySettingPage extends StatefulWidget {
const SSHVirtKeySettingPage({Key? key}) : super(key: key);
@@ -44,17 +45,18 @@ class _SSHVirtKeySettingPageState extends State<SSHVirtKeySettingPage> {
final disabled = VirtKey.values.where((e) => !keys.contains(e)).toList();
final allKeys = [...keys, ...disabled];
return ReorderableListView.builder(
padding: const EdgeInsets.fromLTRB(11, 3, 0, 3),
padding: const EdgeInsets.all(7),
itemBuilder: (_, idx) {
final key = allKeys[idx];
return ListTile(
key: ValueKey(idx),
title: _buildTitle(key),
leading: _buildCheckBox(keys, key, idx, idx < keys.length),
trailing: isDesktop
? nil
: const Icon(Icons.drag_handle, color: Colors.grey),
);
final help = key.help(_s);
return RoundRectCard(
key: ValueKey(idx),
ListTile(
title: _buildTitle(key),
subtitle: help == null ? null : Text(help, style: grey),
leading: _buildCheckBox(keys, key, idx, idx < keys.length),
trailing: isDesktop ? null : const Icon(Icons.drag_handle),
));
},
itemCount: allKeys.length,
onReorder: (o, n) {
@@ -70,12 +72,8 @@ class _SSHVirtKeySettingPageState extends State<SSHVirtKeySettingPage> {
Widget _buildTitle(VirtKey key) {
return key.icon == null
? Text(
key.text,
textAlign: TextAlign.center,
)
? Text(key.text)
: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(key.text),
const SizedBox(width: 10),