diff --git a/lib/app.dart b/lib/app.dart index 2db5f531..6d27b3c5 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -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, diff --git a/lib/core/route.dart b/lib/core/route.dart index 0a744e78..15d30f45 100644 --- a/lib/core/route.dart +++ b/lib/core/route.dart @@ -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'); - } } diff --git a/lib/data/model/app/backup.dart b/lib/data/model/app/backup.dart index cc87d234..d6501b4a 100644 --- a/lib/data/model/app/backup.dart +++ b/lib/data/model/app/backup.dart @@ -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'; diff --git a/lib/data/res/rebuild.dart b/lib/data/res/rebuild.dart deleted file mode 100644 index 71c4019f..00000000 --- a/lib/data/res/rebuild.dart +++ /dev/null @@ -1,6 +0,0 @@ -import 'package:fl_lib/fl_lib.dart'; - -abstract final class RNodes { - static final app = RNode(); - static final dark = false.vn; -} diff --git a/lib/view/page/home/appbar.dart b/lib/view/page/home/appbar.dart index a30e9474..ce6fc3fc 100644 --- a/lib/view/page/home/appbar.dart +++ b/lib/view/page/home/appbar.dart @@ -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); diff --git a/lib/view/page/iperf.dart b/lib/view/page/iperf.dart index 7cdb67ea..08c5f0ef 100644 --- a/lib/view/page/iperf.dart +++ b/lib/view/page/iperf.dart @@ -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 createState() => _IPerfPageState(); + + static const route = AppRouteArg( + page: IPerfPage.new, + path: '/iperf', + ); } class _IPerfPageState extends State { @@ -44,7 +56,7 @@ class _IPerfPageState extends State { return; } AppRoutes.ssh( - spi: widget.spi, + spi: widget.args.spi, initCmd: 'iperf -c ${_hostCtrl.text} -p ${_portCtrl.text}', ).go(context); }, diff --git a/lib/view/page/pve.dart b/lib/view/page/pve.dart index 82925cb4..13c98b9d 100644 --- a/lib/view/page/pve.dart +++ b/lib/view/page/pve.dart @@ -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(page: PvePage.new, path: '/pve'); + @override State createState() => _PvePageState(); } @@ -25,7 +33,7 @@ final class PvePage extends StatefulWidget { const _kHorziPadding = 11.0; final class _PvePageState extends State { - 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 { 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, diff --git a/lib/view/page/server/detail/view.dart b/lib/view/page/server/detail/view.dart index 0aefe6c2..49239321 100644 --- a/lib/view/page/server/detail/view.dart +++ b/lib/view/page/server/detail/view.dart @@ -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 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)), ), ); } diff --git a/lib/view/page/setting/entries/server.dart b/lib/view/page/setting/entries/server.dart index da91cac4..65d0cb24 100644 --- a/lib/view/page/setting/entries/server.dart +++ b/lib/view/page/setting/entries/server.dart @@ -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), ); } diff --git a/lib/view/page/setting/entry.dart b/lib/view/page/setting/entry.dart index fb6a2772..7793ef4d 100644 --- a/lib/view/page/setting/entry.dart +++ b/lib/view/page/setting/entry.dart @@ -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'; diff --git a/lib/view/page/setting/seq/srv_func_seq.dart b/lib/view/page/setting/seq/srv_func_seq.dart index 775cab86..2f23c394 100644 --- a/lib/view/page/setting/seq/srv_func_seq.dart +++ b/lib/view/page/setting/seq/srv_func_seq.dart @@ -9,6 +9,8 @@ class ServerFuncBtnsOrderPage extends StatefulWidget { @override State createState() => _ServerDetailOrderPageState(); + + static const route = AppRouteNoArg(page: ServerFuncBtnsOrderPage.new, path: '/setting/seq/srv_func'); } class _ServerDetailOrderPageState extends State { diff --git a/lib/view/page/ssh/page.dart b/lib/view/page/ssh/page.dart index 36e8796e..fcbce5d2 100644 --- a/lib/view/page/ssh/page.dart +++ b/lib/view/page/ssh/page.dart @@ -154,7 +154,7 @@ class SSHPageState extends State _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 showToolbar: isMobile, viewOffset: Offset( 2 * _horizonPadding, - CustomAppBar.sysStatusBarHeight ?? _media.padding.top, + CustomAppBar.sysStatusBarHeight, ), hideScrollBar: false, focusNode: widget.focusNode, diff --git a/lib/view/widget/server_func_btns.dart b/lib/view/widget/server_func_btns.dart index cc6e3c84..00575d4b 100644 --- a/lib/view/widget/server_func_btns.dart +++ b/lib/view/widget/server_func_btns.dart @@ -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)); diff --git a/pubspec.lock b/pubspec.lock index 48f28dcf..b89afd14 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -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: diff --git a/pubspec.yaml b/pubspec.yaml index e7c51486..1f570c38 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -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: