mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-18 15:54:35 +01:00
new: support pick ssh term theme
This commit is contained in:
@@ -342,7 +342,7 @@ class _ServerDetailPageState extends State<ServerDetailPage>
|
||||
SizedBox(
|
||||
width: width,
|
||||
child: Text(
|
||||
'${ns.speedIn(device: device)}\n${ns.totalIn(device: device)}',
|
||||
'${ns.speedIn(device: device)} | ${ns.totalIn(device: device)}',
|
||||
style: textSize11,
|
||||
textAlign: TextAlign.center,
|
||||
textScaleFactor: 0.87,
|
||||
@@ -351,7 +351,7 @@ class _ServerDetailPageState extends State<ServerDetailPage>
|
||||
SizedBox(
|
||||
width: width,
|
||||
child: Text(
|
||||
'${ns.speedOut(device: device)}\n${ns.totalOut(device: device)}',
|
||||
'${ns.speedOut(device: device)} | ${ns.totalOut(device: device)}',
|
||||
style: textSize11,
|
||||
textAlign: TextAlign.right,
|
||||
textScaleFactor: 0.87,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_material_color_picker/flutter_material_color_picker.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:toolbox/data/model/ssh/terminal_color.dart';
|
||||
|
||||
import '../../core/update.dart';
|
||||
import '../../core/utils/ui.dart';
|
||||
@@ -24,20 +25,19 @@ class SettingPage extends StatefulWidget {
|
||||
|
||||
class _SettingPageState extends State<SettingPage> {
|
||||
late final SettingStore _setting;
|
||||
late int _selectedColorValue;
|
||||
late int _launchPageIdx;
|
||||
late final ServerProvider _serverProvider;
|
||||
late MediaQueryData _media;
|
||||
late ThemeData _theme;
|
||||
late S _s;
|
||||
|
||||
var _updateInterval = 5.0;
|
||||
late int _selectedColorValue;
|
||||
late int _launchPageIdx;
|
||||
late int _termThemeIdx;
|
||||
late double _updateInterval;
|
||||
|
||||
@override
|
||||
void didChangeDependencies() {
|
||||
super.didChangeDependencies();
|
||||
_media = MediaQuery.of(context);
|
||||
_theme = Theme.of(context);
|
||||
_s = S.of(context);
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@ class _SettingPageState extends State<SettingPage> {
|
||||
_serverProvider = locator<ServerProvider>();
|
||||
_setting = locator<SettingStore>();
|
||||
_launchPageIdx = _setting.launchPage.fetch()!;
|
||||
_termThemeIdx = _setting.termColorIdx.fetch()!;
|
||||
_updateInterval = _setting.serverStatusUpdateInterval.fetch()!.toDouble();
|
||||
}
|
||||
|
||||
@@ -64,6 +65,7 @@ class _SettingPageState extends State<SettingPage> {
|
||||
_buildCheckUpdate(),
|
||||
_buildLaunchPage(),
|
||||
_buildDistLogoSwitch(),
|
||||
_buildTermTheme(),
|
||||
].map((e) => RoundRectCard(e)).toList(),
|
||||
),
|
||||
);
|
||||
@@ -218,10 +220,7 @@ class _SettingPageState extends State<SettingPage> {
|
||||
contentPadding: EdgeInsets.zero,
|
||||
title: Text(
|
||||
tabTitleName(context, tabs.indexOf(e)),
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
color: _theme.textTheme.bodyMedium!.color!.withAlpha(177),
|
||||
),
|
||||
style: textSize13,
|
||||
),
|
||||
trailing: _buildRadio(tabs.indexOf(e)),
|
||||
),
|
||||
@@ -242,4 +241,49 @@ class _SettingPageState extends State<SettingPage> {
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildTermTheme() {
|
||||
return ExpansionTile(
|
||||
textColor: primaryColor,
|
||||
childrenPadding: const EdgeInsets.only(left: 17),
|
||||
title: Text(
|
||||
_s.termTheme,
|
||||
style: textSize13,
|
||||
),
|
||||
trailing: Text(
|
||||
TerminalColorsPlatform.values[_termThemeIdx].name,
|
||||
style: textSize13,
|
||||
),
|
||||
children: _buildTermThemeRadioList(),
|
||||
);
|
||||
}
|
||||
|
||||
List<Widget> _buildTermThemeRadioList() {
|
||||
return TerminalColorsPlatform.values
|
||||
.map(
|
||||
(e) => ListTile(
|
||||
contentPadding: EdgeInsets.zero,
|
||||
title: Text(
|
||||
e.name,
|
||||
style: textSize13,
|
||||
),
|
||||
trailing: _buildTermThemeRadio(e),
|
||||
),
|
||||
)
|
||||
.toList();
|
||||
}
|
||||
|
||||
Radio _buildTermThemeRadio(TerminalColorsPlatform platform) {
|
||||
return Radio<int>(
|
||||
value: platform.index,
|
||||
groupValue: _termThemeIdx,
|
||||
onChanged: (int? value) {
|
||||
setState(() {
|
||||
value ??= 0;
|
||||
_termThemeIdx = value!;
|
||||
_setting.termColorIdx.put(value!);
|
||||
});
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:toolbox/data/model/ssh/terminal_color.dart';
|
||||
import 'package:toolbox/generated/l10n.dart';
|
||||
import 'package:xterm/xterm.dart';
|
||||
|
||||
@@ -17,6 +18,7 @@ import '../../data/provider/virtual_keyboard.dart';
|
||||
import '../../data/res/color.dart';
|
||||
import '../../data/res/terminal_theme.dart';
|
||||
import '../../data/res/virtual_key.dart';
|
||||
import '../../data/store/setting.dart';
|
||||
import '../../locator.dart';
|
||||
|
||||
class SSHPage extends StatefulWidget {
|
||||
@@ -36,6 +38,7 @@ class _SSHPageState extends State<SSHPage> {
|
||||
final TerminalController _terminalController = TerminalController();
|
||||
final ContextMenuController _menuController = ContextMenuController();
|
||||
late TextStyle _menuTextStyle;
|
||||
late TerminalColors _termColors;
|
||||
late S _s;
|
||||
|
||||
var _isDark = false;
|
||||
@@ -43,6 +46,7 @@ class _SSHPageState extends State<SSHPage> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_termColors = TerminalColorsPlatform.values[locator<SettingStore>().termColorIdx.fetch()!].colors;
|
||||
initTerminal();
|
||||
}
|
||||
|
||||
@@ -102,7 +106,7 @@ class _SSHPageState extends State<SSHPage> {
|
||||
final termTheme = _isDark ? termDarkTheme : termLightTheme;
|
||||
return Scaffold(
|
||||
backgroundColor: termTheme.background,
|
||||
body: _buildBody(termTheme),
|
||||
body: _buildBody(termTheme.toTerminalTheme(_termColors)),
|
||||
bottomNavigationBar: _buildBottom(),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user