mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2026-02-23 08:34:39 +01:00
opt.: mem usage
This commit is contained in:
@@ -11,19 +11,16 @@ import 'package:toolbox/core/utils/platform.dart';
|
||||
import 'package:toolbox/data/model/app/backup.dart';
|
||||
import 'package:toolbox/data/res/logger.dart';
|
||||
import 'package:toolbox/data/res/path.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
import 'package:toolbox/view/widget/round_rect_card.dart';
|
||||
|
||||
import '../../core/utils/misc.dart';
|
||||
import '../../data/res/ui.dart';
|
||||
import '../../data/store/setting.dart';
|
||||
import '../../locator.dart';
|
||||
import '../widget/custom_appbar.dart';
|
||||
import '../widget/store_switch.dart';
|
||||
|
||||
class BackupPage extends StatelessWidget {
|
||||
BackupPage({Key? key}) : super(key: key);
|
||||
|
||||
final _setting = locator<SettingStore>();
|
||||
const BackupPage({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -118,7 +115,7 @@ class BackupPage extends StatelessWidget {
|
||||
// },
|
||||
// icon: const Icon(Icons.sync)),
|
||||
// width13,
|
||||
StoreSwitch(prop: _setting.icloudSync)
|
||||
StoreSwitch(prop: Stores.setting.icloudSync)
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import 'package:toolbox/core/extension/context/dialog.dart';
|
||||
import 'package:toolbox/core/extension/context/snackbar.dart';
|
||||
import 'package:toolbox/core/route.dart';
|
||||
import 'package:toolbox/data/model/docker/image.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
import 'package:toolbox/view/widget/input_field.dart';
|
||||
|
||||
import '../../data/model/docker/ps.dart';
|
||||
@@ -16,7 +17,6 @@ import '../../data/model/app/error.dart';
|
||||
import '../../data/model/app/menu.dart';
|
||||
import '../../data/res/ui.dart';
|
||||
import '../../data/res/url.dart';
|
||||
import '../../data/store/docker.dart';
|
||||
import '../../locator.dart';
|
||||
import '../widget/custom_appbar.dart';
|
||||
import '../widget/popup_menu.dart';
|
||||
@@ -34,7 +34,6 @@ class DockerManagePage extends StatefulWidget {
|
||||
|
||||
class _DockerManagePageState extends State<DockerManagePage> {
|
||||
final _docker = locator<DockerProvider>();
|
||||
final _store = locator<DockerStore>();
|
||||
final _textController = TextEditingController();
|
||||
late S _s;
|
||||
|
||||
@@ -479,7 +478,7 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
||||
|
||||
Future<void> _showEditHostDialog() async {
|
||||
final id = widget.spi.id;
|
||||
final host = _store.fetch(id) ?? 'unix:///run/user/1000/docker.sock';
|
||||
final host = Stores.docker.fetch(id) ?? 'unix:///run/user/1000/docker.sock';
|
||||
final ctrl = TextEditingController(text: host);
|
||||
await context.showRoundDialog(
|
||||
title: Text(_s.dockerEditHost),
|
||||
@@ -499,7 +498,7 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
||||
|
||||
void _onSaveDockerHost(String val) {
|
||||
context.pop();
|
||||
_store.put(widget.spi.id, val.trim());
|
||||
Stores.docker.put(widget.spi.id, val.trim());
|
||||
_docker.refresh();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,8 +11,7 @@ import 'package:toolbox/core/extension/context/common.dart';
|
||||
import 'package:toolbox/core/extension/context/dialog.dart';
|
||||
import 'package:toolbox/core/utils/misc.dart';
|
||||
import 'package:toolbox/data/res/highlight.dart';
|
||||
import 'package:toolbox/data/store/setting.dart';
|
||||
import 'package:toolbox/locator.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
|
||||
import '../widget/custom_appbar.dart';
|
||||
import '../widget/two_line_text.dart';
|
||||
@@ -45,12 +44,12 @@ class EditorPage extends StatefulWidget {
|
||||
|
||||
class _EditorPageState extends State<EditorPage> {
|
||||
final _focusNode = FocusNode();
|
||||
final _setting = locator<SettingStore>();
|
||||
|
||||
late CodeController _controller;
|
||||
late Map<String, TextStyle> _codeTheme;
|
||||
late S _s;
|
||||
late final _textStyle = TextStyle(fontSize: _setting.editorFontSize.fetch());
|
||||
late final _textStyle =
|
||||
TextStyle(fontSize: Stores.setting.editorFontSize.fetch());
|
||||
|
||||
String? _langCode;
|
||||
|
||||
@@ -81,9 +80,11 @@ class _EditorPageState extends State<EditorPage> {
|
||||
_s = S.of(context)!;
|
||||
|
||||
if (context.isDark) {
|
||||
_codeTheme = themeMap[_setting.editorDarkTheme.fetch()] ?? monokaiTheme;
|
||||
_codeTheme =
|
||||
themeMap[Stores.setting.editorDarkTheme.fetch()] ?? monokaiTheme;
|
||||
} else {
|
||||
_codeTheme = themeMap[_setting.editorTheme.fetch()] ?? a11yLightTheme;
|
||||
_codeTheme =
|
||||
themeMap[Stores.setting.editorTheme.fetch()] ?? a11yLightTheme;
|
||||
}
|
||||
_focusNode.requestFocus();
|
||||
}
|
||||
|
||||
@@ -10,8 +10,8 @@ import 'package:provider/provider.dart';
|
||||
import 'package:toolbox/core/route.dart';
|
||||
import 'package:toolbox/data/model/server/disk.dart';
|
||||
import 'package:toolbox/data/provider/server.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
import 'package:toolbox/data/res/ui.dart';
|
||||
import 'package:toolbox/data/store/setting.dart';
|
||||
import 'package:toolbox/locator.dart';
|
||||
|
||||
import '../../core/analysis.dart';
|
||||
@@ -39,13 +39,12 @@ class _FullScreenPageState extends State<FullScreenPage> with AfterLayoutMixin {
|
||||
|
||||
final _pageController = PageController(initialPage: 0);
|
||||
final _serverProvider = locator<ServerProvider>();
|
||||
final _setting = locator<SettingStore>();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
switchStatusBar(hide: true);
|
||||
_rotateQuarter = _setting.fullScreenRotateQuarter.fetch();
|
||||
_rotateQuarter = Stores.setting.fullScreenRotateQuarter.fetch();
|
||||
_timer = Timer.periodic(const Duration(minutes: 1), (_) {
|
||||
if (mounted) {
|
||||
setState(() {});
|
||||
@@ -88,7 +87,8 @@ class _FullScreenPageState extends State<FullScreenPage> with AfterLayoutMixin {
|
||||
// `_screenWidth * 0.03` is the offset value
|
||||
padding: EdgeInsets.all(_screenWidth * 0.03),
|
||||
child: ValueListenableBuilder<int>(
|
||||
valueListenable: _setting.fullScreenRotateQuarter.listenable(),
|
||||
valueListenable:
|
||||
Stores.setting.fullScreenRotateQuarter.listenable(),
|
||||
builder: (_, val, __) {
|
||||
_rotateQuarter = val;
|
||||
return RotatedBox(
|
||||
@@ -297,7 +297,7 @@ class _FullScreenPageState extends State<FullScreenPage> with AfterLayoutMixin {
|
||||
|
||||
Widget _buildNet(ServerStatus ss) {
|
||||
return ValueListenableBuilder<NetViewType>(
|
||||
valueListenable: _setting.netViewType.listenable(),
|
||||
valueListenable: Stores.setting.netViewType.listenable(),
|
||||
builder: (_, val, __) {
|
||||
final data = val.build(ss);
|
||||
return AnimatedSwitcher(
|
||||
@@ -368,7 +368,7 @@ class _FullScreenPageState extends State<FullScreenPage> with AfterLayoutMixin {
|
||||
|
||||
@override
|
||||
Future<void> afterFirstLayout(BuildContext context) async {
|
||||
if (_setting.autoCheckAppUpdate.fetch()) {
|
||||
if (Stores.setting.autoCheckAppUpdate.fetch()) {
|
||||
doUpdate(context);
|
||||
}
|
||||
await GetIt.I.allReady();
|
||||
|
||||
@@ -7,6 +7,7 @@ import 'package:get_it/get_it.dart';
|
||||
import 'package:toolbox/core/extension/context/dialog.dart';
|
||||
import 'package:toolbox/data/res/github_id.dart';
|
||||
import 'package:toolbox/data/res/logger.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
|
||||
import '../../core/analysis.dart';
|
||||
import '../../core/route.dart';
|
||||
@@ -21,7 +22,6 @@ import '../../data/res/build_data.dart';
|
||||
import '../../data/res/misc.dart';
|
||||
import '../../data/res/ui.dart';
|
||||
import '../../data/res/url.dart';
|
||||
import '../../data/store/setting.dart';
|
||||
import '../../locator.dart';
|
||||
import '../widget/custom_appbar.dart';
|
||||
import '../widget/round_rect_card.dart';
|
||||
@@ -41,7 +41,6 @@ class _HomePageState extends State<HomePage>
|
||||
AfterLayoutMixin,
|
||||
WidgetsBindingObserver {
|
||||
final _serverProvider = locator<ServerProvider>();
|
||||
final _setting = locator<SettingStore>();
|
||||
final _app = locator<AppProvider>();
|
||||
|
||||
late final PageController _pageController;
|
||||
@@ -56,7 +55,7 @@ class _HomePageState extends State<HomePage>
|
||||
super.initState();
|
||||
switchStatusBar(hide: false);
|
||||
WidgetsBinding.instance.addObserver(this);
|
||||
_selectIndex.value = _setting.launchPage.fetch();
|
||||
_selectIndex.value = Stores.setting.launchPage.fetch();
|
||||
// avoid index out of range
|
||||
if (_selectIndex.value >= AppTab.values.length || _selectIndex.value < 0) {
|
||||
_selectIndex.value = 0;
|
||||
@@ -92,7 +91,7 @@ class _HomePageState extends State<HomePage>
|
||||
break;
|
||||
case AppLifecycleState.paused:
|
||||
// Keep running in background on Android device
|
||||
if (isAndroid && _setting.bgRun.fetch()) {
|
||||
if (isAndroid && Stores.setting.bgRun.fetch()) {
|
||||
if (_app.moveBg) {
|
||||
Miscs.bgRunChannel.invokeMethod('sendToBackground');
|
||||
}
|
||||
@@ -210,7 +209,8 @@ class _HomePageState extends State<HomePage>
|
||||
TextButton(
|
||||
onPressed: () => context.showRoundDialog(
|
||||
title: Text(_versionStr),
|
||||
child: const Text(BuildData.buildAt),
|
||||
child: const Text(
|
||||
'${BuildData.buildAt}\nFlutter ${BuildData.engine}'),
|
||||
),
|
||||
child: Text(
|
||||
'${BuildData.name}\n$_versionStr',
|
||||
@@ -333,7 +333,7 @@ class _HomePageState extends State<HomePage>
|
||||
if (BuildData.modifications != 0) {
|
||||
mod = '(+${BuildData.modifications})';
|
||||
}
|
||||
return 'Ver: 1.0.${BuildData.build}$mod';
|
||||
return 'v1.0.${BuildData.build}$mod';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -341,7 +341,7 @@ class _HomePageState extends State<HomePage>
|
||||
|
||||
@override
|
||||
Future<void> afterFirstLayout(BuildContext context) async {
|
||||
if (_setting.autoCheckAppUpdate.fetch()) {
|
||||
if (Stores.setting.autoCheckAppUpdate.fetch()) {
|
||||
doUpdate(context);
|
||||
}
|
||||
updateHomeWidget();
|
||||
@@ -354,14 +354,14 @@ class _HomePageState extends State<HomePage>
|
||||
}
|
||||
|
||||
void updateHomeWidget() {
|
||||
if (_setting.autoUpdateHomeWidget.fetch()) {
|
||||
if (Stores.setting.autoUpdateHomeWidget.fetch()) {
|
||||
Miscs.homeWidgetChannel.invokeMethod('update');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onLongPressSetting() async {
|
||||
/// Encode [map] to String with indent `\t`
|
||||
final map = _setting.toJson();
|
||||
final map = Stores.setting.toJson();
|
||||
final keys = map.keys;
|
||||
final text = Miscs.jsonEncoder.convert(map);
|
||||
final result = await AppRoute.editor(
|
||||
@@ -374,11 +374,11 @@ class _HomePageState extends State<HomePage>
|
||||
}
|
||||
try {
|
||||
final newSettings = json.decode(result) as Map<String, dynamic>;
|
||||
_setting.box.putAll(newSettings);
|
||||
Stores.setting.box.putAll(newSettings);
|
||||
final newKeys = newSettings.keys;
|
||||
final removedKeys = keys.where((e) => !newKeys.contains(e));
|
||||
for (final key in removedKeys) {
|
||||
_setting.box.delete(key);
|
||||
Stores.setting.box.delete(key);
|
||||
}
|
||||
} catch (e, trace) {
|
||||
context.showRoundDialog(
|
||||
|
||||
@@ -6,8 +6,7 @@ import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:toolbox/core/extension/context/common.dart';
|
||||
import 'package:toolbox/core/extension/context/dialog.dart';
|
||||
import 'package:toolbox/data/store/private_key.dart';
|
||||
import 'package:toolbox/locator.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
|
||||
import '../../../core/route.dart';
|
||||
import '../../../core/utils/platform.dart';
|
||||
@@ -83,9 +82,8 @@ class _PrivateKeyListState extends State<PrivateKeysListPage>
|
||||
}
|
||||
|
||||
void autoAddSystemPriavteKey() {
|
||||
final store = locator<PrivateKeyStore>();
|
||||
// Only trigger on desktop platform and no private key saved
|
||||
if (isDesktop && store.box.keys.isEmpty) {
|
||||
if (isDesktop && Stores.snippet.box.keys.isEmpty) {
|
||||
final home = getHomeDir();
|
||||
if (home == null) return;
|
||||
final idRsaFile = File(joinPath(home, '.ssh/id_rsa'));
|
||||
|
||||
@@ -8,13 +8,13 @@ import 'package:toolbox/core/extension/context/dialog.dart';
|
||||
import 'package:toolbox/core/extension/context/snackbar.dart';
|
||||
import 'package:toolbox/core/extension/uint8list.dart';
|
||||
import 'package:toolbox/core/utils/misc.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
|
||||
import '../../data/model/app/shell_func.dart';
|
||||
import '../../data/model/server/proc.dart';
|
||||
import '../../data/model/server/server_private_info.dart';
|
||||
import '../../data/provider/server.dart';
|
||||
import '../../data/res/ui.dart';
|
||||
import '../../data/store/setting.dart';
|
||||
import '../../locator.dart';
|
||||
import '../widget/custom_appbar.dart';
|
||||
import '../widget/round_rect_card.dart';
|
||||
@@ -33,8 +33,6 @@ class _ProcessPageState extends State<ProcessPage> {
|
||||
late Timer _timer;
|
||||
late MediaQueryData _media;
|
||||
|
||||
final _setting = locator<SettingStore>();
|
||||
|
||||
SSHClient? _client;
|
||||
|
||||
PsResult _result = const PsResult(procs: []);
|
||||
@@ -53,7 +51,7 @@ class _ProcessPageState extends State<ProcessPage> {
|
||||
super.initState();
|
||||
_client = _serverProvider.servers[widget.spi.id]?.client;
|
||||
final duration =
|
||||
Duration(seconds: _setting.serverStatusUpdateInterval.fetch());
|
||||
Duration(seconds: Stores.setting.serverStatusUpdateInterval.fetch());
|
||||
_timer = Timer.periodic(duration, (_) => _refresh());
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import 'package:toolbox/core/extension/order.dart';
|
||||
import 'package:toolbox/data/model/server/cpu.dart';
|
||||
import 'package:toolbox/data/model/server/server_private_info.dart';
|
||||
import 'package:toolbox/data/model/server/system.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
import 'package:toolbox/view/widget/server_func_btns.dart';
|
||||
|
||||
import '../../../core/extension/numx.dart';
|
||||
@@ -17,8 +18,6 @@ import '../../../data/provider/server.dart';
|
||||
import '../../../data/res/color.dart';
|
||||
import '../../../data/res/default.dart';
|
||||
import '../../../data/res/ui.dart';
|
||||
import '../../../data/store/setting.dart';
|
||||
import '../../../locator.dart';
|
||||
import '../../widget/custom_appbar.dart';
|
||||
import '../../widget/round_rect_card.dart';
|
||||
|
||||
@@ -36,9 +35,8 @@ class _ServerDetailPageState extends State<ServerDetailPage>
|
||||
late MediaQueryData _media;
|
||||
late S _s;
|
||||
final Order<String> _cardsOrder = [];
|
||||
final _setting = locator<SettingStore>();
|
||||
|
||||
late final _textFactor = _setting.textFactor.fetch();
|
||||
late final _textFactor = Stores.setting.textFactor.fetch();
|
||||
|
||||
late final _cardBuildMap = Map.fromIterables(
|
||||
Defaults.detailCardOrder,
|
||||
@@ -63,7 +61,7 @@ class _ServerDetailPageState extends State<ServerDetailPage>
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_cardsOrder.addAll(_setting.detailCardOrder.fetch());
|
||||
_cardsOrder.addAll(Stores.setting.detailCardOrder.fetch());
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -82,7 +80,7 @@ class _ServerDetailPageState extends State<ServerDetailPage>
|
||||
}
|
||||
|
||||
Widget _buildMainPage(Server si) {
|
||||
final buildFuncs = !_setting.moveOutServerTabFuncBtns.fetch();
|
||||
final buildFuncs = !Stores.setting.moveOutServerTabFuncBtns.fetch();
|
||||
return Scaffold(
|
||||
appBar: CustomAppBar(
|
||||
title: Text(si.spi.name, style: UIs.textSize18),
|
||||
@@ -309,7 +307,7 @@ class _ServerDetailPageState extends State<ServerDetailPage>
|
||||
Widget _buildDiskView(ServerStatus ss) {
|
||||
final disk = ss.disk;
|
||||
disk.removeWhere((e) {
|
||||
for (final ingorePath in _setting.diskIgnorePath.fetch()) {
|
||||
for (final ingorePath in Stores.setting.diskIgnorePath.fetch()) {
|
||||
if (e.path.startsWith(ingorePath)) return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -8,6 +8,7 @@ import 'package:toolbox/core/extension/context/dialog.dart';
|
||||
import 'package:toolbox/core/extension/media_queryx.dart';
|
||||
import 'package:toolbox/core/extension/ssh_client.dart';
|
||||
import 'package:toolbox/data/model/app/shell_func.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
|
||||
import '../../../core/route.dart';
|
||||
import '../../../core/utils/misc.dart';
|
||||
@@ -20,7 +21,6 @@ import '../../../data/model/server/server_status.dart';
|
||||
import '../../../data/provider/server.dart';
|
||||
import '../../../data/res/color.dart';
|
||||
import '../../../data/res/ui.dart';
|
||||
import '../../../data/store/setting.dart';
|
||||
import '../../../locator.dart';
|
||||
import '../../widget/round_rect_card.dart';
|
||||
import '../../widget/server_func_btns.dart';
|
||||
@@ -40,7 +40,6 @@ class _ServerPageState extends State<ServerPage>
|
||||
|
||||
final _flipedCardIds = <String>{};
|
||||
final _serverProvider = locator<ServerProvider>();
|
||||
final _setting = locator<SettingStore>();
|
||||
|
||||
String? _tag;
|
||||
bool _useDoubleColumn = false;
|
||||
@@ -83,7 +82,8 @@ class _ServerPageState extends State<ServerPage>
|
||||
}
|
||||
|
||||
final filtered = _filterServers(pro);
|
||||
if (_useDoubleColumn && _setting.doubleColumnServersPage.fetch()) {
|
||||
if (_useDoubleColumn &&
|
||||
Stores.setting.doubleColumnServersPage.fetch()) {
|
||||
return _buildBodyMedium(pro);
|
||||
}
|
||||
return _buildBodySmall(provider: pro, filtered: filtered);
|
||||
@@ -290,9 +290,9 @@ class _ServerPageState extends State<ServerPage>
|
||||
),
|
||||
),
|
||||
UIs.height13,
|
||||
if (_setting.moveOutServerTabFuncBtns.fetch() &&
|
||||
if (Stores.setting.moveOutServerTabFuncBtns.fetch() &&
|
||||
// Discussion #146
|
||||
!_setting.serverTabUseOldUI.fetch())
|
||||
!Stores.setting.serverTabUseOldUI.fetch())
|
||||
SizedBox(
|
||||
height: 27,
|
||||
child: ServerFuncBtns(spi: spi, s: _s),
|
||||
@@ -318,7 +318,7 @@ class _ServerPageState extends State<ServerPage>
|
||||
),
|
||||
),
|
||||
);
|
||||
} else if (_setting.serverTabUseOldUI.fetch()) {
|
||||
} else if (Stores.setting.serverTabUseOldUI.fetch()) {
|
||||
rightCorner = ServerFuncBtnsTopRight(spi: spi, s: _s);
|
||||
}
|
||||
return Padding(
|
||||
@@ -392,7 +392,7 @@ class _ServerPageState extends State<ServerPage>
|
||||
|
||||
Widget _buildNet(ServerStatus ss) {
|
||||
return ValueListenableBuilder<NetViewType>(
|
||||
valueListenable: _setting.netViewType.listenable(),
|
||||
valueListenable: Stores.setting.netViewType.listenable(),
|
||||
builder: (_, val, __) {
|
||||
final data = val.build(ss);
|
||||
return AnimatedSwitcher(
|
||||
@@ -510,9 +510,9 @@ class _ServerPageState extends State<ServerPage>
|
||||
if (_flipedCardIds.contains(id)) {
|
||||
return 77.0;
|
||||
}
|
||||
if (_setting.moveOutServerTabFuncBtns.fetch() &&
|
||||
if (Stores.setting.moveOutServerTabFuncBtns.fetch() &&
|
||||
// Discussion #146
|
||||
!_setting.serverTabUseOldUI.fetch()) {
|
||||
!Stores.setting.serverTabUseOldUI.fetch()) {
|
||||
return 132;
|
||||
}
|
||||
return 107;
|
||||
|
||||
@@ -12,6 +12,7 @@ import 'package:toolbox/core/extension/context/snackbar.dart';
|
||||
import 'package:toolbox/core/extension/locale.dart';
|
||||
import 'package:toolbox/core/extension/context/dialog.dart';
|
||||
import 'package:toolbox/core/extension/stringx.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
|
||||
import '../../../core/persistant_store.dart';
|
||||
import '../../../core/route.dart';
|
||||
@@ -25,8 +26,6 @@ import '../../../data/res/build_data.dart';
|
||||
import '../../../data/res/color.dart';
|
||||
import '../../../data/res/path.dart';
|
||||
import '../../../data/res/ui.dart';
|
||||
import '../../../data/store/server.dart';
|
||||
import '../../../data/store/setting.dart';
|
||||
import '../../../locator.dart';
|
||||
import '../../widget/color_picker.dart';
|
||||
import '../../widget/custom_appbar.dart';
|
||||
@@ -53,9 +52,9 @@ class _SettingPageState extends State<SettingPage> {
|
||||
final _keyboardTypeKey = GlobalKey<PopupMenuButtonState<int>>();
|
||||
final _rotateQuarterKey = GlobalKey<PopupMenuButtonState<int>>();
|
||||
final _netViewTypeKey = GlobalKey<PopupMenuButtonState<NetViewType>>();
|
||||
final _serverProvider = locator<ServerProvider>();
|
||||
final _setting = Stores.setting;
|
||||
|
||||
late final SettingStore _setting;
|
||||
late final ServerProvider _serverProvider;
|
||||
late S _s;
|
||||
late SharedPreferences _sp;
|
||||
|
||||
@@ -89,8 +88,6 @@ class _SettingPageState extends State<SettingPage> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_serverProvider = locator<ServerProvider>();
|
||||
_setting = locator<SettingStore>();
|
||||
_nightMode.value = _setting.themeMode.fetch();
|
||||
_updateInterval.value = _setting.serverStatusUpdateInterval.fetch();
|
||||
_maxRetryCount.value = _setting.maxRetryCount.fetch();
|
||||
@@ -964,21 +961,21 @@ class _SettingPageState extends State<SettingPage> {
|
||||
title: Text(_s.deleteServers),
|
||||
trailing: const Icon(Icons.delete_forever),
|
||||
onTap: () async {
|
||||
final all = locator<ServerStore>().box.keys.map(
|
||||
(e) => TextButton(
|
||||
onPressed: () => context.showRoundDialog(
|
||||
title: Text(_s.attention),
|
||||
child: Text(_s.sureDelete(e)),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () => _serverProvider.delServer(e),
|
||||
child: Text(_s.ok),
|
||||
)
|
||||
],
|
||||
),
|
||||
child: Text(e),
|
||||
),
|
||||
);
|
||||
final all = Stores.server.box.keys.map(
|
||||
(e) => TextButton(
|
||||
onPressed: () => context.showRoundDialog(
|
||||
title: Text(_s.attention),
|
||||
child: Text(_s.sureDelete(e)),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () => _serverProvider.delServer(e),
|
||||
child: Text(_s.ok),
|
||||
)
|
||||
],
|
||||
),
|
||||
child: Text(e),
|
||||
),
|
||||
);
|
||||
context.showRoundDialog<List<String>>(
|
||||
title: Text(_s.choose),
|
||||
child: SingleChildScrollView(
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
|
||||
import '../../../core/extension/order.dart';
|
||||
import '../../../data/store/setting.dart';
|
||||
import '../../../locator.dart';
|
||||
import '../../widget/custom_appbar.dart';
|
||||
import '../../widget/round_rect_card.dart';
|
||||
|
||||
@@ -15,8 +14,6 @@ class ServerDetailOrderPage extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _ServerDetailOrderPageState extends State<ServerDetailOrderPage> {
|
||||
final _store = locator<SettingStore>();
|
||||
|
||||
final Order<String> _cardsOrder = [];
|
||||
|
||||
late S _s;
|
||||
@@ -30,7 +27,7 @@ class _ServerDetailOrderPageState extends State<ServerDetailOrderPage> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_cardsOrder.addAll(_store.detailCardOrder.fetch());
|
||||
_cardsOrder.addAll(Stores.setting.detailCardOrder.fetch());
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -50,7 +47,7 @@ class _ServerDetailOrderPageState extends State<ServerDetailOrderPage> {
|
||||
_cardsOrder.move(
|
||||
oldIndex,
|
||||
newIndex,
|
||||
property: _store.detailCardOrder,
|
||||
property: Stores.setting.detailCardOrder,
|
||||
);
|
||||
}),
|
||||
padding: const EdgeInsets.symmetric(horizontal: 7, vertical: 3),
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||
import 'package:toolbox/core/extension/order.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
import 'package:toolbox/view/widget/round_rect_card.dart';
|
||||
|
||||
import '../../../data/provider/server.dart';
|
||||
import '../../../data/store/setting.dart';
|
||||
import '../../../locator.dart';
|
||||
import '../../widget/custom_appbar.dart';
|
||||
|
||||
@@ -16,7 +16,6 @@ class ServerOrderPage extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _ServerOrderPageState extends State<ServerOrderPage> {
|
||||
final _store = locator<SettingStore>();
|
||||
final _provider = locator<ServerProvider>();
|
||||
|
||||
late S _s;
|
||||
@@ -44,7 +43,7 @@ class _ServerOrderPageState extends State<ServerOrderPage> {
|
||||
_provider.serverOrder.move(
|
||||
oldIndex,
|
||||
newIndex,
|
||||
property: _store.serverOrder,
|
||||
property: Stores.setting.serverOrder,
|
||||
);
|
||||
}),
|
||||
padding: const EdgeInsets.symmetric(horizontal: 7, vertical: 3),
|
||||
|
||||
@@ -4,9 +4,8 @@ import 'package:toolbox/core/extension/context/snackbar.dart';
|
||||
import 'package:toolbox/core/extension/order.dart';
|
||||
import 'package:toolbox/core/utils/platform.dart';
|
||||
import 'package:toolbox/data/model/ssh/virtual_key.dart';
|
||||
import 'package:toolbox/data/res/store.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';
|
||||
|
||||
import '../../widget/custom_appbar.dart';
|
||||
@@ -19,7 +18,6 @@ class SSHVirtKeySettingPage extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _SSHVirtKeySettingPageState extends State<SSHVirtKeySettingPage> {
|
||||
final _setting = locator<SettingStore>();
|
||||
late S _s;
|
||||
|
||||
@override
|
||||
@@ -39,7 +37,7 @@ class _SSHVirtKeySettingPageState extends State<SSHVirtKeySettingPage> {
|
||||
}
|
||||
|
||||
Widget _buildBody() {
|
||||
final keys_ = _setting.sshVirtKeys.fetch();
|
||||
final keys_ = Stores.setting.sshVirtKeys.fetch();
|
||||
final keys = <VirtKey>[];
|
||||
for (final key in keys_) {
|
||||
keys.add(key);
|
||||
@@ -67,7 +65,7 @@ class _SSHVirtKeySettingPageState extends State<SSHVirtKeySettingPage> {
|
||||
context.showSnackBar(_s.disabled);
|
||||
return;
|
||||
}
|
||||
keys.moveByItem(keys, o, n, property: _setting.sshVirtKeys);
|
||||
keys.moveByItem(keys, o, n, property: Stores.setting.sshVirtKeys);
|
||||
setState(() {});
|
||||
},
|
||||
);
|
||||
@@ -99,7 +97,7 @@ class _SSHVirtKeySettingPageState extends State<SSHVirtKeySettingPage> {
|
||||
} else {
|
||||
keys.remove(key);
|
||||
}
|
||||
_setting.sshVirtKeys.put(keys);
|
||||
Stores.setting.sshVirtKeys.put(keys);
|
||||
setState(() {});
|
||||
},
|
||||
);
|
||||
|
||||
@@ -3,13 +3,13 @@ import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:toolbox/core/extension/context/dialog.dart';
|
||||
import 'package:toolbox/core/extension/order.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
|
||||
import '../../../core/utils/misc.dart';
|
||||
import '../../../data/model/server/server.dart';
|
||||
import '../../../data/model/server/snippet.dart';
|
||||
import '../../../data/provider/server.dart';
|
||||
import '../../../data/res/ui.dart';
|
||||
import '../../../data/store/setting.dart';
|
||||
import '../../../locator.dart';
|
||||
import '../../widget/tag.dart';
|
||||
import '/core/route.dart';
|
||||
@@ -27,8 +27,6 @@ class _SnippetListPageState extends State<SnippetListPage> {
|
||||
late S _s;
|
||||
late MediaQueryData _media;
|
||||
|
||||
final _settingStore = locator<SettingStore>();
|
||||
|
||||
String? _tag;
|
||||
|
||||
@override
|
||||
@@ -72,7 +70,7 @@ class _SnippetListPageState extends State<SnippetListPage> {
|
||||
oldIdx,
|
||||
newIdx,
|
||||
onMove: (p0) {
|
||||
_settingStore.snippetOrder.put(p0.map((e) => e.name).toList());
|
||||
Stores.setting.snippetOrder.put(p0.map((e) => e.name).toList());
|
||||
},
|
||||
);
|
||||
}),
|
||||
|
||||
@@ -10,7 +10,9 @@ import 'package:provider/provider.dart';
|
||||
import 'package:toolbox/core/extension/context/common.dart';
|
||||
import 'package:toolbox/core/extension/context/dialog.dart';
|
||||
import 'package:toolbox/core/extension/context/snackbar.dart';
|
||||
import 'package:xterm/xterm.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
import 'package:xterm/core.dart';
|
||||
import 'package:xterm/ui.dart' hide TerminalThemes;
|
||||
|
||||
import '../../core/route.dart';
|
||||
import '../../core/utils/platform.dart';
|
||||
@@ -21,7 +23,6 @@ import '../../data/model/ssh/virtual_key.dart';
|
||||
import '../../data/provider/virtual_keyboard.dart';
|
||||
import '../../data/res/color.dart';
|
||||
import '../../data/res/terminal.dart';
|
||||
import '../../data/store/setting.dart';
|
||||
import '../../locator.dart';
|
||||
|
||||
const echoPWD = 'echo \$PWD';
|
||||
@@ -37,7 +38,6 @@ class SSHPage extends StatefulWidget {
|
||||
|
||||
class _SSHPageState extends State<SSHPage> {
|
||||
final _keyboard = locator<VirtualKeyboard>();
|
||||
final _setting = locator<SettingStore>();
|
||||
late final _terminal = Terminal(inputHandler: _keyboard);
|
||||
final TerminalController _terminalController = TerminalController();
|
||||
final List<List<VirtKey>> _virtKeysList = [];
|
||||
@@ -59,13 +59,13 @@ class _SSHPageState extends State<SSHPage> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
final fontFamilly = getFileName(_setting.fontPath.fetch());
|
||||
final fontFamilly = getFileName(Stores.setting.fontPath.fetch());
|
||||
final textStyle = TextStyle(
|
||||
fontFamily: fontFamilly,
|
||||
fontSize: _setting.termFontSize.fetch(),
|
||||
fontSize: Stores.setting.termFontSize.fetch(),
|
||||
);
|
||||
_terminalStyle = TerminalStyle.fromTextStyle(textStyle);
|
||||
_keyboardType = TextInputType.values[_setting.keyboardType.fetch()];
|
||||
_keyboardType = TextInputType.values[Stores.setting.keyboardType.fetch()];
|
||||
_initTerminal();
|
||||
_initVirtKeys();
|
||||
}
|
||||
@@ -89,7 +89,7 @@ class _SSHPageState extends State<SSHPage> {
|
||||
_isDark = context.isDark;
|
||||
_media = MediaQuery.of(context);
|
||||
_s = S.of(context)!;
|
||||
_terminalTheme = _isDark ? termDarkTheme : termLightTheme;
|
||||
_terminalTheme = _isDark ? TerminalThemes.dark : TerminalThemes.light;
|
||||
|
||||
// Because the virtual keyboard only displayed on mobile devices
|
||||
if (isMobile) {
|
||||
@@ -299,7 +299,7 @@ class _SSHPageState extends State<SSHPage> {
|
||||
}
|
||||
|
||||
void _initVirtKeys() {
|
||||
final virtKeys = List<VirtKey>.from(_setting.sshVirtKeys.fetch());
|
||||
final virtKeys = List<VirtKey>.from(Stores.setting.sshVirtKeys.fetch());
|
||||
|
||||
for (int len = 0; len < virtKeys.length; len += 7) {
|
||||
if (len + 7 > virtKeys.length) {
|
||||
@@ -326,7 +326,7 @@ class _SSHPageState extends State<SSHPage> {
|
||||
return _write('Sending password to auth...');
|
||||
}
|
||||
},
|
||||
timeout: _setting.timeoutD,
|
||||
timeout: Stores.setting.timeoutD,
|
||||
);
|
||||
_write('Connected\r\n');
|
||||
_write('Terminal size: ${_terminal.viewWidth}x${_terminal.viewHeight}\r\n');
|
||||
|
||||
@@ -10,7 +10,7 @@ import 'package:toolbox/core/extension/context/snackbar.dart';
|
||||
import 'package:toolbox/core/extension/sftpfile.dart';
|
||||
import 'package:toolbox/data/res/logger.dart';
|
||||
import 'package:toolbox/data/res/misc.dart';
|
||||
import 'package:toolbox/data/store/history.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
import 'package:toolbox/view/widget/round_rect_card.dart';
|
||||
|
||||
import '../../../core/extension/numx.dart';
|
||||
@@ -26,7 +26,6 @@ import '../../../data/provider/server.dart';
|
||||
import '../../../data/provider/sftp.dart';
|
||||
import '../../../data/res/path.dart';
|
||||
import '../../../data/res/ui.dart';
|
||||
import '../../../data/store/setting.dart';
|
||||
import '../../../locator.dart';
|
||||
import '../../widget/custom_appbar.dart';
|
||||
import '../../widget/fade_in.dart';
|
||||
@@ -53,8 +52,6 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
|
||||
final SftpBrowserStatus _status = SftpBrowserStatus();
|
||||
|
||||
final _sftp = locator<SftpProvider>();
|
||||
final _history = locator<HistoryStore>();
|
||||
final _setting = locator<SettingStore>();
|
||||
|
||||
late S _s;
|
||||
|
||||
@@ -228,10 +225,10 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
|
||||
title: Text(_s.goto),
|
||||
child: Autocomplete<String>(
|
||||
optionsBuilder: (val) {
|
||||
if (!_setting.recordHistory.fetch()) {
|
||||
if (!Stores.setting.recordHistory.fetch()) {
|
||||
return [];
|
||||
}
|
||||
return _history.sftpPath.all.where(
|
||||
return Stores.history.sftpPath.all.where(
|
||||
(element) => element.contains(val.text),
|
||||
);
|
||||
},
|
||||
@@ -254,7 +251,9 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
|
||||
|
||||
_status.path?.update(p);
|
||||
final suc = await _listDir(path: p);
|
||||
if (suc && _setting.recordHistory.fetch()) _history.sftpPath.add(p);
|
||||
if (suc && Stores.setting.recordHistory.fetch()) {
|
||||
Stores.history.sftpPath.add(p);
|
||||
}
|
||||
},
|
||||
icon: const Icon(Icons.gps_fixed),
|
||||
);
|
||||
@@ -429,7 +428,7 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
|
||||
void _delete(BuildContext context, SftpName file) {
|
||||
context.pop();
|
||||
final isDir = file.attr.isDirectory;
|
||||
final useRmrf = _setting.sftpRmrfDir.fetch();
|
||||
final useRmrf = Stores.setting.sftpRmrfDir.fetch();
|
||||
final dirText = (isDir && !useRmrf) ? '\n${_s.sureDirEmpty}' : '';
|
||||
final text = '${_s.sureDelete(file.filename)}$dirText';
|
||||
final child = Text(text);
|
||||
|
||||
Reference in New Issue
Block a user