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/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/generated/l10n/l10n.dart';
import 'package:server_box/view/page/home/home.dart';
@@ -25,7 +24,6 @@ class MyApp extends StatelessWidget {
if (!Stores.setting.useSystemPrimaryColor.fetch()) {
final colorSeed = Color(Stores.setting.colorSeed.fetch());
UIs.colorSeed = colorSeed;
// Past code uses [UIs.primaryColor] as the primary color
UIs.primaryColor = colorSeed;
return _buildApp(
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/view/page/container.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/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/setting/platform/android.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/ssh/page.dart';
import 'package:server_box/view/page/setting/seq/virt_key.dart';
@@ -154,16 +151,4 @@ class AppRoutes {
),
'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/snippet.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';
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
Size get preferredSize {
final height = switch (Pfs.type) {
Pfs.macos => paddingTop + (CustomAppBar.sysStatusBarHeight ?? 0),
Pfs.macos => paddingTop + CustomAppBar.sysStatusBarHeight,
_ => paddingTop,
};
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/data/model/server/server_private_info.dart';
class IPerfPage extends StatefulWidget {
final class IPerfPageArgs {
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
State<IPerfPage> createState() => _IPerfPageState();
static const route = AppRouteArg<void, IPerfPageArgs>(
page: IPerfPage.new,
path: '/iperf',
);
}
class _IPerfPageState extends State<IPerfPage> {
@@ -44,7 +56,7 @@ class _IPerfPageState extends State<IPerfPage> {
return;
}
AppRoutes.ssh(
spi: widget.spi,
spi: widget.args.spi,
initCmd: 'iperf -c ${_hostCtrl.text} -p ${_portCtrl.text}',
).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/two_line_text.dart';
final class PvePage extends StatefulWidget {
final class PvePageArgs {
final Spi spi;
const PvePageArgs({required this.spi});
}
final class PvePage extends StatefulWidget {
final PvePageArgs args;
const PvePage({
super.key,
required this.spi,
required this.args,
});
static const route = AppRouteArg<void, PvePageArgs>(page: PvePage.new, path: '/pve');
@override
State<PvePage> createState() => _PvePageState();
}
@@ -25,7 +33,7 @@ final class PvePage extends StatefulWidget {
const _kHorziPadding = 11.0;
final class _PvePageState extends State<PvePage> {
late final _pve = PveProvider(spi: widget.spi);
late final _pve = PveProvider(spi: widget.args.spi);
late MediaQueryData _media;
Timer? _timer;
@@ -53,7 +61,7 @@ final class _PvePageState extends State<PvePage> {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: TwoLineText(up: 'PVE', down: widget.spi.name),
title: TwoLineText(up: 'PVE', down: widget.args.spi.name),
actions: [
ValBuilder(
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/system.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/widget/server_func_btns.dart';
import 'package:server_box/core/route.dart';
import 'package:server_box/data/model/server/server.dart';
part 'misc.dart';
@@ -865,7 +864,7 @@ class _ServerDetailPageState extends State<ServerDetailPage>
title: const Text('PVE'),
leading: const Icon(FontAwesome.server_solid, size: 17),
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(
title: Text(l10n.sequence),
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:server_box/core/extension/context/locale.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/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/editor.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 'entries/app.dart';

View File

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

View File

@@ -154,7 +154,7 @@ class SSHPageState extends State<SSHPage>
_media.padding.top,
child: Padding(
padding: EdgeInsets.only(
top: widget.notFromTab ? CustomAppBar.sysStatusBarHeight ?? 0 : 0,
top: widget.notFromTab ? CustomAppBar.sysStatusBarHeight : 0,
left: _horizonPadding,
right: _horizonPadding,
),
@@ -172,7 +172,7 @@ class SSHPageState extends State<SSHPage>
showToolbar: isMobile,
viewOffset: Offset(
2 * _horizonPadding,
CustomAppBar.sysStatusBarHeight ?? _media.padding.top,
CustomAppBar.sysStatusBarHeight,
),
hideScrollBar: false,
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/snippet.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/core/route.dart';
@@ -161,10 +162,8 @@ void _onTapMoreBtns(
_gotoSSH(spi, context);
break;
case ServerFuncBtn.iperf:
AppRoutes.iperf(spi: spi).checkGo(
context: context,
check: () => _checkClient(context, spi.id),
);
if (!_checkClient(context, spi.id)) return;
IPerfPage.route.go(context, IPerfPageArgs(spi: spi));
break;
case ServerFuncBtn.systemd:
SystemdPage.route.go(context, SystemdPageArgs(spi: spi));

View File

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

View File

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