feat: only one line ssh virt keys (#332)

This commit is contained in:
lollipopkit
2024-04-23 00:42:54 +08:00
parent d312b783e9
commit 1249055668
2 changed files with 32 additions and 2 deletions

View File

@@ -2,11 +2,13 @@ import 'package:flutter/material.dart';
import 'package:toolbox/core/extension/context/locale.dart'; import 'package:toolbox/core/extension/context/locale.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/extension/widget.dart';
import 'package:toolbox/core/utils/platform/base.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';
import 'package:toolbox/view/widget/cardx.dart'; import 'package:toolbox/view/widget/cardx.dart';
import 'package:toolbox/view/widget/store_switch.dart';
import '../../../widget/appbar.dart'; import '../../../widget/appbar.dart';
@@ -26,7 +28,22 @@ class _SSHVirtKeySettingPageState extends State<SSHVirtKeySettingPage> {
appBar: CustomAppBar( appBar: CustomAppBar(
title: Text(l10n.editVirtKeys), title: Text(l10n.editVirtKeys),
), ),
body: _buildBody(), body: Column(
children: [
Padding(
padding: const EdgeInsets.all(7),
child: _buildOneLineVirtKey().card,
),
Expanded(child: _buildBody()),
],
),
);
}
Widget _buildOneLineVirtKey() {
return ListTile(
title: Text(l10n.onlyOneLine),
trailing: StoreSwitch(prop: Stores.setting.horizonVirtKey),
); );
} }

View File

@@ -61,6 +61,7 @@ class _SSHPageState extends State<SSHPage> with AutomaticKeepAliveClientMixin {
late TerminalTheme _terminalTheme; late TerminalTheme _terminalTheme;
double _virtKeyWidth = 0; double _virtKeyWidth = 0;
double _virtKeysHeight = 0; double _virtKeysHeight = 0;
late final _horizonVirtKeys = Stores.setting.horizonVirtKey.fetch();
bool _isDark = false; bool _isDark = false;
Timer? _virtKeyLongPressTimer; Timer? _virtKeyLongPressTimer;
@@ -103,9 +104,13 @@ class _SSHPageState extends State<SSHPage> with AutomaticKeepAliveClientMixin {
// Because the virtual keyboard only displayed on mobile devices // Because the virtual keyboard only displayed on mobile devices
if (isMobile) { if (isMobile) {
_virtKeyWidth = _media.size.width / 7; _virtKeyWidth = _media.size.width / 7;
if (_horizonVirtKeys) {
_virtKeysHeight = _media.size.height * 0.043;
} else {
_virtKeysHeight = _media.size.height * 0.043 * _virtKeysList.length; _virtKeysHeight = _media.size.height * 0.043 * _virtKeysList.length;
} }
} }
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@@ -180,6 +185,14 @@ class _SSHPageState extends State<SSHPage> with AutomaticKeepAliveClientMixin {
} }
Widget _buildVirtualKey() { Widget _buildVirtualKey() {
if (_horizonVirtKeys) {
return SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(
children: _virtKeysList.expand((e) => e).map(_buildVirtKeyItem).toList(),
),
);
}
final rows = _virtKeysList final rows = _virtKeysList
.map((e) => Row(children: e.map((f) => _buildVirtKeyItem(f)).toList())) .map((e) => Row(children: e.map((f) => _buildVirtKeyItem(f)).toList()))
.toList(); .toList();