mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
opt.: routes
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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';
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
import 'package:fl_lib/fl_lib.dart';
|
|
||||||
|
|
||||||
abstract final class RNodes {
|
|
||||||
static final app = RNode();
|
|
||||||
static final dark = false.vn;
|
|
||||||
}
|
|
||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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)),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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';
|
||||||
|
|||||||
@@ -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> {
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|||||||
15
pubspec.lock
15
pubspec.lock
@@ -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:
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user