opt.: routes

This commit is contained in:
lollipopkit🏳️‍⚧️
2025-04-10 15:28:47 +08:00
parent 391e4f6b65
commit 6e7fee20b8
15 changed files with 48 additions and 56 deletions

View File

@@ -5,7 +5,6 @@ import 'package:flutter/material.dart';
import 'package:server_box/core/extension/context/locale.dart'; import 'package:server_box/core/extension/context/locale.dart';
import 'package:server_box/data/res/build_data.dart'; import 'package:server_box/data/res/build_data.dart';
import 'package:server_box/data/res/rebuild.dart';
import 'package:server_box/data/res/store.dart'; import 'package:server_box/data/res/store.dart';
import 'package:server_box/generated/l10n/l10n.dart'; import 'package:server_box/generated/l10n/l10n.dart';
import 'package:server_box/view/page/home/home.dart'; import 'package:server_box/view/page/home/home.dart';
@@ -25,7 +24,6 @@ class MyApp extends StatelessWidget {
if (!Stores.setting.useSystemPrimaryColor.fetch()) { if (!Stores.setting.useSystemPrimaryColor.fetch()) {
final colorSeed = Color(Stores.setting.colorSeed.fetch()); final colorSeed = Color(Stores.setting.colorSeed.fetch());
UIs.colorSeed = colorSeed; UIs.colorSeed = colorSeed;
// Past code uses [UIs.primaryColor] as the primary color
UIs.primaryColor = colorSeed; UIs.primaryColor = colorSeed;
return _buildApp( return _buildApp(
context, context,

View File

@@ -5,14 +5,11 @@ import 'package:server_box/data/model/server/server_private_info.dart';
import 'package:server_box/data/res/store.dart'; import 'package:server_box/data/res/store.dart';
import 'package:server_box/view/page/container.dart'; import 'package:server_box/view/page/container.dart';
import 'package:server_box/view/page/home/home.dart'; import 'package:server_box/view/page/home/home.dart';
import 'package:server_box/view/page/iperf.dart';
import 'package:server_box/view/page/ping.dart'; import 'package:server_box/view/page/ping.dart';
import 'package:server_box/view/page/private_key/edit.dart'; import 'package:server_box/view/page/private_key/edit.dart';
import 'package:server_box/view/page/pve.dart';
import 'package:server_box/view/page/server/detail/view.dart'; import 'package:server_box/view/page/server/detail/view.dart';
import 'package:server_box/view/page/setting/platform/android.dart'; import 'package:server_box/view/page/setting/platform/android.dart';
import 'package:server_box/view/page/setting/platform/ios.dart'; import 'package:server_box/view/page/setting/platform/ios.dart';
import 'package:server_box/view/page/setting/seq/srv_func_seq.dart';
import 'package:server_box/view/page/snippet/result.dart'; import 'package:server_box/view/page/snippet/result.dart';
import 'package:server_box/view/page/ssh/page.dart'; import 'package:server_box/view/page/ssh/page.dart';
import 'package:server_box/view/page/setting/seq/virt_key.dart'; import 'package:server_box/view/page/setting/seq/virt_key.dart';
@@ -154,16 +151,4 @@ class AppRoutes {
), ),
'snippet_result'); 'snippet_result');
} }
static AppRoutes iperf({Key? key, required Spi spi}) {
return AppRoutes(IPerfPage(key: key, spi: spi), 'iperf');
}
static AppRoutes serverFuncBtnsOrder({Key? key}) {
return AppRoutes(ServerFuncBtnsOrderPage(key: key), 'server_func_btns_seq');
}
static AppRoutes pve({Key? key, required Spi spi}) {
return AppRoutes(PvePage(key: key, spi: spi), 'pve');
}
} }

View File

@@ -8,7 +8,6 @@ import 'package:server_box/data/model/server/private_key_info.dart';
import 'package:server_box/data/model/server/server_private_info.dart'; import 'package:server_box/data/model/server/server_private_info.dart';
import 'package:server_box/data/model/server/snippet.dart'; import 'package:server_box/data/model/server/snippet.dart';
import 'package:server_box/data/res/misc.dart'; import 'package:server_box/data/res/misc.dart';
import 'package:server_box/data/res/rebuild.dart';
import 'package:server_box/data/res/store.dart'; import 'package:server_box/data/res/store.dart';
part 'backup.g.dart'; part 'backup.g.dart';

View File

@@ -1,6 +0,0 @@
import 'package:fl_lib/fl_lib.dart';
abstract final class RNodes {
static final app = RNode();
static final dark = false.vn;
}

View File

@@ -35,7 +35,7 @@ final class _AppBar extends StatelessWidget implements PreferredSizeWidget {
@override @override
Size get preferredSize { Size get preferredSize {
final height = switch (Pfs.type) { final height = switch (Pfs.type) {
Pfs.macos => paddingTop + (CustomAppBar.sysStatusBarHeight ?? 0), Pfs.macos => paddingTop + CustomAppBar.sysStatusBarHeight,
_ => paddingTop, _ => paddingTop,
}; };
return Size.fromHeight(height); return Size.fromHeight(height);

View File

@@ -4,12 +4,24 @@ import 'package:server_box/core/extension/context/locale.dart';
import 'package:server_box/core/route.dart'; import 'package:server_box/core/route.dart';
import 'package:server_box/data/model/server/server_private_info.dart'; import 'package:server_box/data/model/server/server_private_info.dart';
class IPerfPage extends StatefulWidget { final class IPerfPageArgs {
final Spi spi; final Spi spi;
const IPerfPage({super.key, required this.spi});
const IPerfPageArgs({required this.spi});
}
class IPerfPage extends StatefulWidget {
final IPerfPageArgs args;
const IPerfPage({super.key, required this.args});
@override @override
State<IPerfPage> createState() => _IPerfPageState(); State<IPerfPage> createState() => _IPerfPageState();
static const route = AppRouteArg<void, IPerfPageArgs>(
page: IPerfPage.new,
path: '/iperf',
);
} }
class _IPerfPageState extends State<IPerfPage> { class _IPerfPageState extends State<IPerfPage> {
@@ -44,7 +56,7 @@ class _IPerfPageState extends State<IPerfPage> {
return; return;
} }
AppRoutes.ssh( AppRoutes.ssh(
spi: widget.spi, spi: widget.args.spi,
initCmd: 'iperf -c ${_hostCtrl.text} -p ${_portCtrl.text}', initCmd: 'iperf -c ${_hostCtrl.text} -p ${_portCtrl.text}',
).go(context); ).go(context);
}, },

View File

@@ -10,14 +10,22 @@ import 'package:server_box/data/res/store.dart';
import 'package:server_box/view/widget/percent_circle.dart'; import 'package:server_box/view/widget/percent_circle.dart';
import 'package:server_box/view/widget/two_line_text.dart'; import 'package:server_box/view/widget/two_line_text.dart';
final class PvePage extends StatefulWidget { final class PvePageArgs {
final Spi spi; final Spi spi;
const PvePageArgs({required this.spi});
}
final class PvePage extends StatefulWidget {
final PvePageArgs args;
const PvePage({ const PvePage({
super.key, super.key,
required this.spi, required this.args,
}); });
static const route = AppRouteArg<void, PvePageArgs>(page: PvePage.new, path: '/pve');
@override @override
State<PvePage> createState() => _PvePageState(); State<PvePage> createState() => _PvePageState();
} }
@@ -25,7 +33,7 @@ final class PvePage extends StatefulWidget {
const _kHorziPadding = 11.0; const _kHorziPadding = 11.0;
final class _PvePageState extends State<PvePage> { final class _PvePageState extends State<PvePage> {
late final _pve = PveProvider(spi: widget.spi); late final _pve = PveProvider(spi: widget.args.spi);
late MediaQueryData _media; late MediaQueryData _media;
Timer? _timer; Timer? _timer;
@@ -53,7 +61,7 @@ final class _PvePageState extends State<PvePage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: TwoLineText(up: 'PVE', down: widget.spi.name), title: TwoLineText(up: 'PVE', down: widget.args.spi.name),
actions: [ actions: [
ValBuilder( ValBuilder(
listenable: _pve.err, listenable: _pve.err,

View File

@@ -17,10 +17,9 @@ import 'package:server_box/data/model/server/sensors.dart';
import 'package:server_box/data/model/server/server_private_info.dart'; import 'package:server_box/data/model/server/server_private_info.dart';
import 'package:server_box/data/model/server/system.dart'; import 'package:server_box/data/model/server/system.dart';
import 'package:server_box/data/res/store.dart'; import 'package:server_box/data/res/store.dart';
import 'package:server_box/view/page/pve.dart';
import 'package:server_box/view/page/server/edit.dart'; import 'package:server_box/view/page/server/edit.dart';
import 'package:server_box/view/widget/server_func_btns.dart'; import 'package:server_box/view/widget/server_func_btns.dart';
import 'package:server_box/core/route.dart';
import 'package:server_box/data/model/server/server.dart'; import 'package:server_box/data/model/server/server.dart';
part 'misc.dart'; part 'misc.dart';
@@ -865,7 +864,7 @@ class _ServerDetailPageState extends State<ServerDetailPage>
title: const Text('PVE'), title: const Text('PVE'),
leading: const Icon(FontAwesome.server_solid, size: 17), leading: const Icon(FontAwesome.server_solid, size: 17),
trailing: const Icon(Icons.chevron_right), trailing: const Icon(Icons.chevron_right),
onTap: () => AppRoutes.pve(spi: si.spi).go(context), onTap: () => PvePage.route.go(context, PvePageArgs(spi: si.spi)),
), ),
); );
} }

View File

@@ -133,7 +133,7 @@ extension _Server on _AppSettingsPageState {
return ListTile( return ListTile(
title: Text(l10n.sequence), title: Text(l10n.sequence),
trailing: const Icon(Icons.keyboard_arrow_right), trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () => AppRoutes.serverFuncBtnsOrder().go(context), onTap: () => ServerFuncBtnsOrderPage.route.go(context),
); );
} }

View File

@@ -10,7 +10,6 @@ import 'package:server_box/generated/l10n/l10n.dart';
import 'package:icons_plus/icons_plus.dart'; import 'package:icons_plus/icons_plus.dart';
import 'package:server_box/core/extension/context/locale.dart'; import 'package:server_box/core/extension/context/locale.dart';
import 'package:server_box/data/res/github_id.dart'; import 'package:server_box/data/res/github_id.dart';
import 'package:server_box/data/res/rebuild.dart';
import 'package:server_box/data/res/store.dart'; import 'package:server_box/data/res/store.dart';
import 'package:server_box/data/res/url.dart'; import 'package:server_box/data/res/url.dart';
@@ -20,6 +19,7 @@ import 'package:server_box/data/res/build_data.dart';
import 'package:server_box/view/page/backup.dart'; import 'package:server_box/view/page/backup.dart';
import 'package:server_box/view/page/editor.dart'; import 'package:server_box/view/page/editor.dart';
import 'package:server_box/view/page/private_key/list.dart'; import 'package:server_box/view/page/private_key/list.dart';
import 'package:server_box/view/page/setting/seq/srv_func_seq.dart';
part 'about.dart'; part 'about.dart';
part 'entries/app.dart'; part 'entries/app.dart';

View File

@@ -9,6 +9,8 @@ class ServerFuncBtnsOrderPage extends StatefulWidget {
@override @override
State<ServerFuncBtnsOrderPage> createState() => _ServerDetailOrderPageState(); State<ServerFuncBtnsOrderPage> createState() => _ServerDetailOrderPageState();
static const route = AppRouteNoArg(page: ServerFuncBtnsOrderPage.new, path: '/setting/seq/srv_func');
} }
class _ServerDetailOrderPageState extends State<ServerFuncBtnsOrderPage> { class _ServerDetailOrderPageState extends State<ServerFuncBtnsOrderPage> {

View File

@@ -154,7 +154,7 @@ class SSHPageState extends State<SSHPage>
_media.padding.top, _media.padding.top,
child: Padding( child: Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
top: widget.notFromTab ? CustomAppBar.sysStatusBarHeight ?? 0 : 0, top: widget.notFromTab ? CustomAppBar.sysStatusBarHeight : 0,
left: _horizonPadding, left: _horizonPadding,
right: _horizonPadding, right: _horizonPadding,
), ),
@@ -172,7 +172,7 @@ class SSHPageState extends State<SSHPage>
showToolbar: isMobile, showToolbar: isMobile,
viewOffset: Offset( viewOffset: Offset(
2 * _horizonPadding, 2 * _horizonPadding,
CustomAppBar.sysStatusBarHeight ?? _media.padding.top, CustomAppBar.sysStatusBarHeight,
), ),
hideScrollBar: false, hideScrollBar: false,
focusNode: widget.focusNode, focusNode: widget.focusNode,

View File

@@ -9,6 +9,7 @@ import 'package:server_box/data/model/server/snippet.dart';
import 'package:server_box/data/provider/server.dart'; import 'package:server_box/data/provider/server.dart';
import 'package:server_box/data/provider/snippet.dart'; import 'package:server_box/data/provider/snippet.dart';
import 'package:server_box/data/res/store.dart'; import 'package:server_box/data/res/store.dart';
import 'package:server_box/view/page/iperf.dart';
import 'package:server_box/view/page/systemd.dart'; import 'package:server_box/view/page/systemd.dart';
import 'package:server_box/core/route.dart'; import 'package:server_box/core/route.dart';
@@ -161,10 +162,8 @@ void _onTapMoreBtns(
_gotoSSH(spi, context); _gotoSSH(spi, context);
break; break;
case ServerFuncBtn.iperf: case ServerFuncBtn.iperf:
AppRoutes.iperf(spi: spi).checkGo( if (!_checkClient(context, spi.id)) return;
context: context, IPerfPage.route.go(context, IPerfPageArgs(spi: spi));
check: () => _checkClient(context, spi.id),
);
break; break;
case ServerFuncBtn.systemd: case ServerFuncBtn.systemd:
SystemdPage.route.go(context, SystemdPageArgs(spi: spi)); SystemdPage.route.go(context, SystemdPageArgs(spi: spi));

View File

@@ -478,8 +478,8 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
path: "." path: "."
ref: "v1.0.257" ref: "v1.0.263"
resolved-ref: af64c32469b797d98fa539f04592b06bdb977d1a resolved-ref: "42579f45363029584c6fbe11f84b6aa0780339e7"
url: "https://github.com/lppcg/fl_lib" url: "https://github.com/lppcg/fl_lib"
source: git source: git
version: "0.0.1" version: "0.0.1"
@@ -1657,12 +1657,11 @@ packages:
webdav_client_plus: webdav_client_plus:
dependency: "direct main" dependency: "direct main"
description: description:
path: "." name: webdav_client_plus
ref: "v1.0.86" sha256: "0f992fe05a46674a800d9fd8fdc5c54952ff739da155c558776a62ca0c2bed3a"
resolved-ref: "7e08000e20c001b15a747c9564adfbfd45c7cadc" url: "https://pub.dev"
url: "https://github.com/lollipopkit/webdav_client" source: hosted
source: git version: "1.0.2"
version: "1.2.2"
win32: win32:
dependency: transitive dependency: transitive
description: description:

View File

@@ -30,6 +30,7 @@ dependencies:
json_annotation: ^4.9.0 json_annotation: ^4.9.0
choice: ^2.3.2 choice: ^2.3.2
flutter_reorderable_grid_view: ^5.1.0 flutter_reorderable_grid_view: ^5.1.0
webdav_client_plus: ^1.0.2
dartssh2: dartssh2:
git: git:
url: https://github.com/lollipopkit/dartssh2 url: https://github.com/lollipopkit/dartssh2
@@ -54,14 +55,10 @@ dependencies:
git: git:
url: https://github.com/lollipopkit/plain_notification_token url: https://github.com/lollipopkit/plain_notification_token
ref: v1.0.23 ref: v1.0.23
webdav_client_plus:
git:
url: https://github.com/lollipopkit/webdav_client
ref: v1.0.86
fl_lib: fl_lib:
git: git:
url: https://github.com/lppcg/fl_lib url: https://github.com/lppcg/fl_lib
ref: v1.0.262 ref: v1.0.263
dependency_overrides: dependency_overrides:
# webdav_client_plus: # webdav_client_plus: