diff --git a/lib/deprecated/router/router.dart b/lib/deprecated/router/router.dart index 7a558865..4fe88aa3 100644 --- a/lib/deprecated/router/router.dart +++ b/lib/deprecated/router/router.dart @@ -24,7 +24,7 @@ class LunaRouter { /// Calls `defineAllRoutes()` on all module routers that implement [LunaModuleRouter]. void initialize() { router.notFoundHandler = Handler( - handlerFunc: (context, params) => const InvalidRoutePage(), + handlerFunc: (context, params) => InvalidRoutePage(), ); router.define( '/', diff --git a/lib/modules/external_modules/routes/external_modules/route.dart b/lib/modules/external_modules/routes/external_modules/route.dart index 6d6482e6..e268dc7d 100644 --- a/lib/modules/external_modules/routes/external_modules/route.dart +++ b/lib/modules/external_modules/routes/external_modules/route.dart @@ -27,13 +27,13 @@ class _State extends State<_Widget> with LunaScrollControllerMixin { return LunaScaffold( scaffoldKey: _scaffoldKey, module: LunaModule.EXTERNAL_MODULES, - appBar: _appBar() as PreferredSizeWidget?, + appBar: _appBar(), drawer: _drawer(), body: _body(), ); } - Widget _appBar() { + PreferredSizeWidget _appBar() { return LunaAppBar( useDrawer: true, title: LunaModule.EXTERNAL_MODULES.title, diff --git a/lib/modules/radarr/routes/movie_details/route.dart b/lib/modules/radarr/routes/movie_details/route.dart index c5a873eb..ca565e8c 100644 --- a/lib/modules/radarr/routes/movie_details/route.dart +++ b/lib/modules/radarr/routes/movie_details/route.dart @@ -101,7 +101,7 @@ class _State extends State<_Widget> with LunaLoadCallbackMixin { @override Widget build(BuildContext context) { if (widget.movieId <= 0) - return const InvalidRoutePage( + return InvalidRoutePage( title: 'Movie Details', message: 'Movie Not Found', ); diff --git a/lib/modules/radarr/routes/releases/route.dart b/lib/modules/radarr/routes/releases/route.dart index e7af8212..84d57de0 100644 --- a/lib/modules/radarr/routes/releases/route.dart +++ b/lib/modules/radarr/routes/releases/route.dart @@ -65,7 +65,7 @@ class _State extends State<_Widget> with LunaScrollControllerMixin { @override Widget build(BuildContext context) { if (widget.movieId <= 0) { - return const InvalidRoutePage( + return InvalidRoutePage( title: 'Releases', message: 'Movie Not Found', ); diff --git a/lib/modules/settings/routes/configuration_search/pages/add_indexer_headers.dart b/lib/modules/settings/routes/configuration_search/pages/add_indexer_headers.dart index 613e294c..a3cb5c1d 100644 --- a/lib/modules/settings/routes/configuration_search/pages/add_indexer_headers.dart +++ b/lib/modules/settings/routes/configuration_search/pages/add_indexer_headers.dart @@ -50,7 +50,7 @@ class _State extends State<_Widget> with LunaScrollControllerMixin { Widget build(BuildContext context) { _arguments = ModalRoute.of(context)!.settings.arguments as _Arguments?; if (_arguments == null) { - return const InvalidRoutePage( + return InvalidRoutePage( title: 'Custom Headers', message: 'Indexer Not Found', ); diff --git a/lib/modules/settings/routes/configuration_search/pages/edit_indexer.dart b/lib/modules/settings/routes/configuration_search/pages/edit_indexer.dart index f00d6a3d..ea2b1a17 100644 --- a/lib/modules/settings/routes/configuration_search/pages/edit_indexer.dart +++ b/lib/modules/settings/routes/configuration_search/pages/edit_indexer.dart @@ -54,10 +54,10 @@ class _State extends State<_Widget> with LunaScrollControllerMixin { @override Widget build(BuildContext context) { if (widget.indexerId < 0) - return const InvalidRoutePage( + return InvalidRoutePage( title: 'Edit Indexer', message: 'Indexer Not Found'); if (!LunaBox.indexers.contains(widget.indexerId)) - return const InvalidRoutePage( + return InvalidRoutePage( title: 'Edit Indexer', message: 'Indexer Not Found'); return LunaScaffold( scaffoldKey: _scaffoldKey, diff --git a/lib/modules/settings/routes/configuration_search/pages/edit_indexer_headers.dart b/lib/modules/settings/routes/configuration_search/pages/edit_indexer_headers.dart index 7a1ec798..409aea72 100644 --- a/lib/modules/settings/routes/configuration_search/pages/edit_indexer_headers.dart +++ b/lib/modules/settings/routes/configuration_search/pages/edit_indexer_headers.dart @@ -54,7 +54,7 @@ class _State extends State<_Widget> with LunaScrollControllerMixin { @override Widget build(BuildContext context) { if (widget.indexerId < 0 || !LunaBox.indexers.contains(widget.indexerId)) { - return const InvalidRoutePage( + return InvalidRoutePage( title: 'Custom Headers', message: 'Indexer Not Found', ); diff --git a/lib/modules/tautulli/routes/tautulli/route.dart b/lib/modules/tautulli/routes/tautulli/route.dart index 2908771a..41b2bf09 100644 --- a/lib/modules/tautulli/routes/tautulli/route.dart +++ b/lib/modules/tautulli/routes/tautulli/route.dart @@ -35,7 +35,7 @@ class _State extends State<_Widget> { scaffoldKey: _scaffoldKey, module: LunaModule.TAUTULLI, drawer: _drawer(), - appBar: _appBar() as PreferredSizeWidget?, + appBar: _appBar(), bottomNavigationBar: _bottomNavigationBar(), body: _body(), ); @@ -49,7 +49,7 @@ class _State extends State<_Widget> { return null; } - Widget _appBar() { + PreferredSizeWidget _appBar() { List profiles = LunaBox.profiles.keys.fold([], (value, element) { if (LunaBox.profiles.read(element)?.tautulliEnabled ?? false) value.add(element); diff --git a/lib/widgets/pages/invalid_route.dart b/lib/widgets/pages/invalid_route.dart index 93fa0ca2..d22db02a 100644 --- a/lib/widgets/pages/invalid_route.dart +++ b/lib/widgets/pages/invalid_route.dart @@ -2,10 +2,11 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; class InvalidRoutePage extends StatelessWidget { + final _scaffoldKey = GlobalKey(); final String? title; final String? message; - const InvalidRoutePage({ + InvalidRoutePage({ Key? key, this.title, this.message, @@ -14,6 +15,7 @@ class InvalidRoutePage extends StatelessWidget { @override Widget build(BuildContext context) { return LunaScaffold( + scaffoldKey: _scaffoldKey, appBar: LunaAppBar( title: title ?? 'LunaSea', scrollControllers: const [], diff --git a/lib/widgets/ui/scaffold.dart b/lib/widgets/ui/scaffold.dart index c66f74b6..e747add6 100644 --- a/lib/widgets/ui/scaffold.dart +++ b/lib/widgets/ui/scaffold.dart @@ -4,7 +4,7 @@ import 'package:lunasea/modules.dart'; import 'package:lunasea/system/platform.dart'; class LunaScaffold extends StatelessWidget { - final GlobalKey? scaffoldKey; + final GlobalKey scaffoldKey; final LunaModule? module; final PreferredSizeWidget? appBar; final Widget? body; @@ -19,7 +19,7 @@ class LunaScaffold extends StatelessWidget { // ignore: use_key_in_widget_constructors const LunaScaffold({ - this.scaffoldKey, + required this.scaffoldKey, this.module, this.appBar, this.body, @@ -33,15 +33,16 @@ class LunaScaffold extends StatelessWidget { @override Widget build(BuildContext context) { - final state = scaffoldKey?.currentState; - final hasDrawer = state?.hasDrawer ?? false; - - if (hasDrawer && LunaPlatform.isAndroid) { + if (LunaPlatform.isAndroid) { return WillPopScope( onWillPop: () async { - if (state!.isDrawerOpen) return true; - state.openDrawer(); - return false; + final state = scaffoldKey.currentState; + if (state?.hasDrawer ?? false) { + if (state!.isDrawerOpen) return true; + state.openDrawer(); + return false; + } + return true; }, child: scaffold, );