mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
new: editor softWrap (#338)
This commit is contained in:
@@ -272,6 +272,8 @@ class SettingStore extends PersistentStore {
|
||||
/// 0 -> unset, 1 -> true, 2 -> false
|
||||
late final inAppUpdate = property('inAppUpdate', 0);
|
||||
|
||||
late final editorSoftWrap = property('editorSoftWrap', isIOS);
|
||||
|
||||
// Never show these settings for users
|
||||
//
|
||||
// ------BEGIN------
|
||||
|
||||
@@ -257,6 +257,7 @@
|
||||
"shutdown": "Abschaltung",
|
||||
"size": "Größe",
|
||||
"snippet": "Snippet",
|
||||
"softWrap": "Weicher Umbruch",
|
||||
"speed": "Tempo",
|
||||
"spentTime": "Benötigte Zeit: {time}",
|
||||
"sshTip": "Diese Funktion befindet sich jetzt in der Experimentierphase.\n\nBitte melde Bugs auf {url} oder mach mit bei der Entwicklung.",
|
||||
|
||||
@@ -257,6 +257,7 @@
|
||||
"shutdown": "Shutdown",
|
||||
"size": "Size",
|
||||
"snippet": "Snippet",
|
||||
"softWrap": "Soft wrap",
|
||||
"speed": "Speed",
|
||||
"spentTime": "Spent time: {time}",
|
||||
"sshTip": "This function is now in the experimental stage.\n\nPlease report bugs on {url} or join our development.",
|
||||
|
||||
@@ -257,6 +257,7 @@
|
||||
"shutdown": "Apagar",
|
||||
"size": "Tamaño",
|
||||
"snippet": "Fragmento de código",
|
||||
"softWrap": "Salto de línea suave",
|
||||
"speed": "Velocidad",
|
||||
"spentTime": "Tiempo gastado: {time}",
|
||||
"sshTip": "Esta función está en fase de pruebas.\n\nPor favor, informa los problemas en {url}, o únete a nuestro desarrollo.",
|
||||
|
||||
@@ -257,6 +257,7 @@
|
||||
"shutdown": "Éteindre",
|
||||
"size": "Taille",
|
||||
"snippet": "Extrait",
|
||||
"softWrap": "Retour à la ligne doux",
|
||||
"speed": "Vitesse",
|
||||
"spentTime": "Temps écoulé : {time}",
|
||||
"sshTip": "Cette fonction est actuellement au stade expérimental.\n\n Veuillez signaler les bogues sur {url} ou rejoignez notre développement.",
|
||||
|
||||
@@ -257,6 +257,7 @@
|
||||
"shutdown": "Matikan",
|
||||
"size": "Ukuran",
|
||||
"snippet": "Snippet",
|
||||
"softWrap": "Pembungkus lembut",
|
||||
"speed": "Kecepatan",
|
||||
"spentTime": "Menghabiskan waktu: {time}",
|
||||
"sshTip": "Fungsi ini sekarang dalam tahap eksperimen.\n\nHarap laporkan bug di {url} atau bergabunglah dengan pengembangan kami.",
|
||||
|
||||
@@ -257,6 +257,7 @@
|
||||
"shutdown": "シャットダウン",
|
||||
"size": "サイズ",
|
||||
"snippet": "スニペット",
|
||||
"softWrap": "ソフトラップ",
|
||||
"speed": "速度",
|
||||
"spentTime": "時間を費やしました: {time}",
|
||||
"sshTip": "この機能は現在テスト段階にあります。\n\n問題がある場合は、{url}でフィードバックしてください。",
|
||||
|
||||
@@ -256,6 +256,7 @@
|
||||
"shutdown": "Afsluiten",
|
||||
"size": "Grootte",
|
||||
"snippet": "Fragment",
|
||||
"softWrap": "Zachte wrap",
|
||||
"speed": "Snelheid",
|
||||
"spentTime": "Gebruikte tijd: {time}",
|
||||
"sshTip": "Deze functie bevindt zich momenteel in de experimentele fase.\n\nMeld alstublieft bugs op {url} of sluit je aan bij onze ontwikkeling.",
|
||||
|
||||
@@ -257,6 +257,7 @@
|
||||
"shutdown": "Desligar",
|
||||
"size": "Tamanho",
|
||||
"snippet": "Snippet",
|
||||
"softWrap": "Quebra de linha suave",
|
||||
"speed": "Velocidade",
|
||||
"spentTime": "Tempo gasto: {time}",
|
||||
"sshTip": "Esta funcionalidade está em fase de teste.\n\nPor favor, reporte problemas em {url} ou junte-se a nós no desenvolvimento.",
|
||||
|
||||
@@ -257,6 +257,7 @@
|
||||
"shutdown": "выключение",
|
||||
"size": "размер",
|
||||
"snippet": "фрагмент",
|
||||
"softWrap": "Мягкий перенос",
|
||||
"speed": "скорость",
|
||||
"spentTime": "Затрачено времени: {time}",
|
||||
"sshTip": "Эта функция находится в стадии тестирования.\n\nПожалуйста, отправляйте отчеты о проблемах на {url} или присоединяйтесь к нашей разработке.",
|
||||
|
||||
@@ -257,6 +257,7 @@
|
||||
"shutdown": "关机",
|
||||
"size": "大小",
|
||||
"snippet": "代码片段",
|
||||
"softWrap": "自动换行",
|
||||
"speed": "速度",
|
||||
"spentTime": "耗时: {time}",
|
||||
"sshTip": "该功能目前处于测试阶段。\n\n请在 {url} 反馈问题,或者加入我们开发。",
|
||||
|
||||
@@ -257,6 +257,7 @@
|
||||
"shutdown": "关机",
|
||||
"size": "大小",
|
||||
"snippet": "程式片段",
|
||||
"softWrap": "軟換行",
|
||||
"speed": "速度",
|
||||
"spentTime": "耗時: {time}",
|
||||
"sshTip": "該功能目前處於測試階段。\n\n請在 {url} 反饋問題,或者加入我們開發。",
|
||||
|
||||
@@ -171,6 +171,7 @@ class _EditorPageState extends State<EditorPage> {
|
||||
styles: _codeTheme,
|
||||
),
|
||||
child: CodeField(
|
||||
wrap: Stores.setting.editorSoftWrap.fetch(),
|
||||
focusNode: _focusNode,
|
||||
controller: _controller,
|
||||
textStyle: _textStyle,
|
||||
|
||||
@@ -182,6 +182,7 @@ class _SettingPageState extends State<SettingPage> {
|
||||
Widget _buildEditor() {
|
||||
return Column(
|
||||
children: [
|
||||
_buildEditorWrap(),
|
||||
_buildEditorFontSize(),
|
||||
_buildEditorTheme(),
|
||||
_buildEditorDarkTheme(),
|
||||
@@ -1114,4 +1115,11 @@ class _SettingPageState extends State<SettingPage> {
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildEditorWrap() {
|
||||
return ListTile(
|
||||
title: Text(l10n.softWrap),
|
||||
trailing: StoreSwitch(prop: _setting.editorSoftWrap),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'package:toolbox/core/extension/context/common.dart';
|
||||
import 'package:toolbox/core/extension/context/dialog.dart';
|
||||
import 'package:toolbox/core/extension/context/locale.dart';
|
||||
import 'package:toolbox/core/route.dart';
|
||||
import 'package:toolbox/data/model/server/server_private_info.dart';
|
||||
import 'package:toolbox/data/provider/server.dart';
|
||||
import 'package:toolbox/data/res/provider.dart';
|
||||
import 'package:toolbox/data/res/ui.dart';
|
||||
@@ -14,7 +15,7 @@ class SSHTabPage extends StatefulWidget {
|
||||
const SSHTabPage({super.key});
|
||||
|
||||
@override
|
||||
_SSHTabPageState createState() => _SSHTabPageState();
|
||||
State<SSHTabPage> createState() => _SSHTabPageState();
|
||||
}
|
||||
|
||||
class _SSHTabPageState extends State<SSHTabPage>
|
||||
@@ -84,7 +85,6 @@ class _SSHTabPageState extends State<SSHTabPage>
|
||||
if (confirm != true) {
|
||||
return;
|
||||
}
|
||||
// debugPrint("Removing a tab whose tabId = $e");
|
||||
_tabIds.remove(e);
|
||||
_refreshTabs();
|
||||
},
|
||||
@@ -115,30 +115,7 @@ class _SSHTabPageState extends State<SSHTabPage>
|
||||
title: Text(spi.name),
|
||||
subtitle: Text(spi.id, style: UIs.textGrey),
|
||||
trailing: const Icon(Icons.chevron_right),
|
||||
onTap: () {
|
||||
final name = () {
|
||||
if (_tabIds.containsKey(spi.name)) {
|
||||
return '${spi.name}(${_tabIds.length + 1})';
|
||||
}
|
||||
return spi.name;
|
||||
}();
|
||||
final key = GlobalKey(debugLabel: 'sshTabPage_$name');
|
||||
_tabIds[name] = SSHPage(
|
||||
key: key,
|
||||
spi: spi,
|
||||
notFromTab: false,
|
||||
onSessionEnd: () {
|
||||
// debugPrint("Session done received on page whose tabId = $name");
|
||||
// debugPrint("key = $key");
|
||||
_tabIds.remove(name);
|
||||
_refreshTabs();
|
||||
},
|
||||
);
|
||||
_refreshTabs();
|
||||
final idx = _tabIds.length - 1;
|
||||
_tabController.animateTo(idx);
|
||||
_fabRN.value = idx;
|
||||
},
|
||||
onTap: () => _onTapInitCard(spi),
|
||||
),
|
||||
);
|
||||
},
|
||||
@@ -156,6 +133,31 @@ class _SSHTabPageState extends State<SSHTabPage>
|
||||
);
|
||||
}
|
||||
|
||||
void _onTapInitCard(ServerPrivateInfo spi) {
|
||||
final name = () {
|
||||
if (_tabIds.containsKey(spi.name)) {
|
||||
return '${spi.name}(${_tabIds.length + 1})';
|
||||
}
|
||||
return spi.name;
|
||||
}();
|
||||
final key = GlobalKey<State<SSHPage>>(debugLabel: 'sshTabPage_$name');
|
||||
_tabIds[name] = SSHPage(
|
||||
key: key,
|
||||
spi: spi,
|
||||
notFromTab: false,
|
||||
onSessionEnd: () {
|
||||
// debugPrint("Session done received on page whose tabId = $name");
|
||||
// debugPrint("key = $key");
|
||||
_tabIds.remove(name);
|
||||
_refreshTabs();
|
||||
},
|
||||
);
|
||||
_refreshTabs();
|
||||
final idx = _tabIds.length - 1;
|
||||
_tabController.animateTo(idx);
|
||||
_fabRN.value = idx;
|
||||
}
|
||||
|
||||
void _refreshTabs() {
|
||||
_tabController = TabController(
|
||||
length: _tabIds.length,
|
||||
|
||||
Reference in New Issue
Block a user