new: support pick ssh term theme
This commit is contained in:
@@ -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!);
|
||||
});
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user