feature: Rework responsive layout (#217)

Co-authored-by: PartyDonut <PartyDonut@users.noreply.github.com>
This commit is contained in:
PartyDonut 2025-02-07 15:55:01 +01:00 committed by GitHub
parent e07f280124
commit 8012fdcea8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
48 changed files with 1468 additions and 1040 deletions

View file

@ -6,17 +6,16 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/providers/user_provider.dart';
import 'package:fladder/routes/auto_router.gr.dart';
import 'package:fladder/screens/login/lock_screen.dart';
import 'package:fladder/util/adaptive_layout.dart';
const settingsPageRoute = "settings";
@AutoRouterConfig(replaceInRouteName: 'Screen|Page,Route')
class AutoRouter extends RootStackRouter {
AutoRouter({
required this.layout,
required this.ref,
});
final WidgetRef ref;
final ScreenLayout layout;
@override
List<AutoRouteGuard> get guards => [...super.guards, AuthGuard(ref: ref)];
@ -27,44 +26,33 @@ class AutoRouter extends RootStackRouter {
@override
List<AutoRoute> get routes => [
..._defaultRoutes,
...(layout == ScreenLayout.dual ? desktopRoutes : mobileRoutes),
...otherRoutes,
];
final List<AutoRoute> mobileRoutes = [
final List<AutoRoute> otherRoutes = [
_homeRoute.copyWith(
children: [
_dashboardRoute,
_favouritesRoute,
_syncedRoute,
],
),
AutoRoute(page: DetailsRoute.page, path: '/details', usesPathAsKey: true),
AutoRoute(page: LibrarySearchRoute.page, path: '/library', usesPathAsKey: true),
AutoRoute(page: SettingsRoute.page, path: '/settings'),
..._settingsChildren.map(
(e) => e.copyWith(path: "/$e", initial: false),
),
AutoRoute(page: LockRoute.page, path: '/locked'),
];
final List<AutoRoute> desktopRoutes = [
_homeRoute.copyWith(
children: [
_dashboardRoute,
_favouritesRoute,
_syncedRoute,
...homeRoutes,
AutoRoute(page: DetailsRoute.page, path: 'details', usesPathAsKey: true),
AutoRoute(page: LibrarySearchRoute.page, path: 'library', usesPathAsKey: true),
AutoRoute(
CustomRoute(
page: SettingsRoute.page,
path: 'settings',
path: settingsPageRoute,
children: _settingsChildren,
)
transitionsBuilder: TransitionsBuilders.fadeIn,
),
],
),
AutoRoute(page: LockRoute.page, path: '/locked'),
];
}
final List<AutoRoute> homeRoutes = [
_dashboardRoute,
_favouritesRoute,
_syncedRoute,
];
final List<AutoRoute> _defaultRoutes = [
AutoRoute(page: SplashRoute.page, path: '/splash'),
AutoRoute(page: LoginRoute.page, path: '/login'),
@ -75,25 +63,25 @@ final AutoRoute _dashboardRoute = CustomRoute(
page: DashboardRoute.page,
transitionsBuilder: TransitionsBuilders.fadeIn,
initial: true,
path: 'dashboard',
maintainState: false,
path: 'dashboard',
);
final AutoRoute _favouritesRoute = CustomRoute(
page: FavouritesRoute.page,
transitionsBuilder: TransitionsBuilders.fadeIn,
path: 'favourites',
maintainState: false,
path: 'favourites',
);
final AutoRoute _syncedRoute = CustomRoute(
page: SyncedRoute.page,
transitionsBuilder: TransitionsBuilders.fadeIn,
path: 'synced',
maintainState: false,
path: 'synced',
);
final List<AutoRoute> _settingsChildren = [
CustomRoute(
page: ClientSettingsRoute.page, initial: true, transitionsBuilder: TransitionsBuilders.fadeIn, path: 'client'),
CustomRoute(page: SettingsSelectionRoute.page, transitionsBuilder: TransitionsBuilders.fadeIn, path: 'list'),
CustomRoute(page: ClientSettingsRoute.page, transitionsBuilder: TransitionsBuilders.fadeIn, path: 'client'),
CustomRoute(page: SecuritySettingsRoute.page, transitionsBuilder: TransitionsBuilders.fadeIn, path: 'security'),
CustomRoute(page: PlayerSettingsRoute.page, transitionsBuilder: TransitionsBuilders.fadeIn, path: 'player'),
CustomRoute(page: AboutSettingsRoute.page, transitionsBuilder: TransitionsBuilders.fadeIn, path: 'about'),

View file

@ -8,11 +8,11 @@
// coverage:ignore-file
// ignore_for_file: no_leading_underscores_for_library_prefixes
import 'package:auto_route/auto_route.dart' as _i15;
import 'package:fladder/models/item_base_model.dart' as _i16;
import 'package:fladder/models/items/photos_model.dart' as _i19;
import 'package:auto_route/auto_route.dart' as _i16;
import 'package:fladder/models/item_base_model.dart' as _i17;
import 'package:fladder/models/items/photos_model.dart' as _i20;
import 'package:fladder/models/library_search/library_search_options.dart'
as _i18;
as _i19;
import 'package:fladder/routes/nested_details_screen.dart' as _i4;
import 'package:fladder/screens/dashboard/dashboard_screen.dart' as _i3;
import 'package:fladder/screens/favourites/favourites_screen.dart' as _i5;
@ -26,15 +26,17 @@ import 'package:fladder/screens/settings/client_settings_page.dart' as _i2;
import 'package:fladder/screens/settings/player_settings_page.dart' as _i10;
import 'package:fladder/screens/settings/security_settings_page.dart' as _i11;
import 'package:fladder/screens/settings/settings_screen.dart' as _i12;
import 'package:fladder/screens/splash_screen.dart' as _i13;
import 'package:fladder/screens/syncing/synced_screen.dart' as _i14;
import 'package:flutter/foundation.dart' as _i17;
import 'package:flutter/material.dart' as _i20;
import 'package:fladder/screens/settings/settings_selection_screen.dart'
as _i13;
import 'package:fladder/screens/splash_screen.dart' as _i14;
import 'package:fladder/screens/syncing/synced_screen.dart' as _i15;
import 'package:flutter/foundation.dart' as _i18;
import 'package:flutter/material.dart' as _i21;
/// generated route for
/// [_i1.AboutSettingsPage]
class AboutSettingsRoute extends _i15.PageRouteInfo<void> {
const AboutSettingsRoute({List<_i15.PageRouteInfo>? children})
class AboutSettingsRoute extends _i16.PageRouteInfo<void> {
const AboutSettingsRoute({List<_i16.PageRouteInfo>? children})
: super(
AboutSettingsRoute.name,
initialChildren: children,
@ -42,7 +44,7 @@ class AboutSettingsRoute extends _i15.PageRouteInfo<void> {
static const String name = 'AboutSettingsRoute';
static _i15.PageInfo page = _i15.PageInfo(
static _i16.PageInfo page = _i16.PageInfo(
name,
builder: (data) {
return const _i1.AboutSettingsPage();
@ -52,8 +54,8 @@ class AboutSettingsRoute extends _i15.PageRouteInfo<void> {
/// generated route for
/// [_i2.ClientSettingsPage]
class ClientSettingsRoute extends _i15.PageRouteInfo<void> {
const ClientSettingsRoute({List<_i15.PageRouteInfo>? children})
class ClientSettingsRoute extends _i16.PageRouteInfo<void> {
const ClientSettingsRoute({List<_i16.PageRouteInfo>? children})
: super(
ClientSettingsRoute.name,
initialChildren: children,
@ -61,7 +63,7 @@ class ClientSettingsRoute extends _i15.PageRouteInfo<void> {
static const String name = 'ClientSettingsRoute';
static _i15.PageInfo page = _i15.PageInfo(
static _i16.PageInfo page = _i16.PageInfo(
name,
builder: (data) {
return const _i2.ClientSettingsPage();
@ -71,8 +73,8 @@ class ClientSettingsRoute extends _i15.PageRouteInfo<void> {
/// generated route for
/// [_i3.DashboardScreen]
class DashboardRoute extends _i15.PageRouteInfo<void> {
const DashboardRoute({List<_i15.PageRouteInfo>? children})
class DashboardRoute extends _i16.PageRouteInfo<void> {
const DashboardRoute({List<_i16.PageRouteInfo>? children})
: super(
DashboardRoute.name,
initialChildren: children,
@ -80,7 +82,7 @@ class DashboardRoute extends _i15.PageRouteInfo<void> {
static const String name = 'DashboardRoute';
static _i15.PageInfo page = _i15.PageInfo(
static _i16.PageInfo page = _i16.PageInfo(
name,
builder: (data) {
return const _i3.DashboardScreen();
@ -90,12 +92,12 @@ class DashboardRoute extends _i15.PageRouteInfo<void> {
/// generated route for
/// [_i4.DetailsScreen]
class DetailsRoute extends _i15.PageRouteInfo<DetailsRouteArgs> {
class DetailsRoute extends _i16.PageRouteInfo<DetailsRouteArgs> {
DetailsRoute({
String id = '',
_i16.ItemBaseModel? item,
_i17.Key? key,
List<_i15.PageRouteInfo>? children,
_i17.ItemBaseModel? item,
_i18.Key? key,
List<_i16.PageRouteInfo>? children,
}) : super(
DetailsRoute.name,
args: DetailsRouteArgs(
@ -109,7 +111,7 @@ class DetailsRoute extends _i15.PageRouteInfo<DetailsRouteArgs> {
static const String name = 'DetailsRoute';
static _i15.PageInfo page = _i15.PageInfo(
static _i16.PageInfo page = _i16.PageInfo(
name,
builder: (data) {
final queryParams = data.queryParams;
@ -137,9 +139,9 @@ class DetailsRouteArgs {
final String id;
final _i16.ItemBaseModel? item;
final _i17.ItemBaseModel? item;
final _i17.Key? key;
final _i18.Key? key;
@override
String toString() {
@ -149,8 +151,8 @@ class DetailsRouteArgs {
/// generated route for
/// [_i5.FavouritesScreen]
class FavouritesRoute extends _i15.PageRouteInfo<void> {
const FavouritesRoute({List<_i15.PageRouteInfo>? children})
class FavouritesRoute extends _i16.PageRouteInfo<void> {
const FavouritesRoute({List<_i16.PageRouteInfo>? children})
: super(
FavouritesRoute.name,
initialChildren: children,
@ -158,7 +160,7 @@ class FavouritesRoute extends _i15.PageRouteInfo<void> {
static const String name = 'FavouritesRoute';
static _i15.PageInfo page = _i15.PageInfo(
static _i16.PageInfo page = _i16.PageInfo(
name,
builder: (data) {
return const _i5.FavouritesScreen();
@ -168,8 +170,8 @@ class FavouritesRoute extends _i15.PageRouteInfo<void> {
/// generated route for
/// [_i6.HomeScreen]
class HomeRoute extends _i15.PageRouteInfo<void> {
const HomeRoute({List<_i15.PageRouteInfo>? children})
class HomeRoute extends _i16.PageRouteInfo<void> {
const HomeRoute({List<_i16.PageRouteInfo>? children})
: super(
HomeRoute.name,
initialChildren: children,
@ -177,7 +179,7 @@ class HomeRoute extends _i15.PageRouteInfo<void> {
static const String name = 'HomeRoute';
static _i15.PageInfo page = _i15.PageInfo(
static _i16.PageInfo page = _i16.PageInfo(
name,
builder: (data) {
return const _i6.HomeScreen();
@ -187,16 +189,16 @@ class HomeRoute extends _i15.PageRouteInfo<void> {
/// generated route for
/// [_i7.LibrarySearchScreen]
class LibrarySearchRoute extends _i15.PageRouteInfo<LibrarySearchRouteArgs> {
class LibrarySearchRoute extends _i16.PageRouteInfo<LibrarySearchRouteArgs> {
LibrarySearchRoute({
String? viewModelId,
List<String>? folderId,
bool? favourites,
_i18.SortingOrder? sortOrder,
_i18.SortingOptions? sortingOptions,
_i19.PhotoModel? photoToView,
_i17.Key? key,
List<_i15.PageRouteInfo>? children,
_i19.SortingOrder? sortOrder,
_i19.SortingOptions? sortingOptions,
_i20.PhotoModel? photoToView,
_i18.Key? key,
List<_i16.PageRouteInfo>? children,
}) : super(
LibrarySearchRoute.name,
args: LibrarySearchRouteArgs(
@ -220,7 +222,7 @@ class LibrarySearchRoute extends _i15.PageRouteInfo<LibrarySearchRouteArgs> {
static const String name = 'LibrarySearchRoute';
static _i15.PageInfo page = _i15.PageInfo(
static _i16.PageInfo page = _i16.PageInfo(
name,
builder: (data) {
final queryParams = data.queryParams;
@ -262,13 +264,13 @@ class LibrarySearchRouteArgs {
final bool? favourites;
final _i18.SortingOrder? sortOrder;
final _i19.SortingOrder? sortOrder;
final _i18.SortingOptions? sortingOptions;
final _i19.SortingOptions? sortingOptions;
final _i19.PhotoModel? photoToView;
final _i20.PhotoModel? photoToView;
final _i17.Key? key;
final _i18.Key? key;
@override
String toString() {
@ -278,8 +280,8 @@ class LibrarySearchRouteArgs {
/// generated route for
/// [_i8.LockScreen]
class LockRoute extends _i15.PageRouteInfo<void> {
const LockRoute({List<_i15.PageRouteInfo>? children})
class LockRoute extends _i16.PageRouteInfo<void> {
const LockRoute({List<_i16.PageRouteInfo>? children})
: super(
LockRoute.name,
initialChildren: children,
@ -287,7 +289,7 @@ class LockRoute extends _i15.PageRouteInfo<void> {
static const String name = 'LockRoute';
static _i15.PageInfo page = _i15.PageInfo(
static _i16.PageInfo page = _i16.PageInfo(
name,
builder: (data) {
return const _i8.LockScreen();
@ -297,8 +299,8 @@ class LockRoute extends _i15.PageRouteInfo<void> {
/// generated route for
/// [_i9.LoginScreen]
class LoginRoute extends _i15.PageRouteInfo<void> {
const LoginRoute({List<_i15.PageRouteInfo>? children})
class LoginRoute extends _i16.PageRouteInfo<void> {
const LoginRoute({List<_i16.PageRouteInfo>? children})
: super(
LoginRoute.name,
initialChildren: children,
@ -306,7 +308,7 @@ class LoginRoute extends _i15.PageRouteInfo<void> {
static const String name = 'LoginRoute';
static _i15.PageInfo page = _i15.PageInfo(
static _i16.PageInfo page = _i16.PageInfo(
name,
builder: (data) {
return const _i9.LoginScreen();
@ -316,8 +318,8 @@ class LoginRoute extends _i15.PageRouteInfo<void> {
/// generated route for
/// [_i10.PlayerSettingsPage]
class PlayerSettingsRoute extends _i15.PageRouteInfo<void> {
const PlayerSettingsRoute({List<_i15.PageRouteInfo>? children})
class PlayerSettingsRoute extends _i16.PageRouteInfo<void> {
const PlayerSettingsRoute({List<_i16.PageRouteInfo>? children})
: super(
PlayerSettingsRoute.name,
initialChildren: children,
@ -325,7 +327,7 @@ class PlayerSettingsRoute extends _i15.PageRouteInfo<void> {
static const String name = 'PlayerSettingsRoute';
static _i15.PageInfo page = _i15.PageInfo(
static _i16.PageInfo page = _i16.PageInfo(
name,
builder: (data) {
return const _i10.PlayerSettingsPage();
@ -335,8 +337,8 @@ class PlayerSettingsRoute extends _i15.PageRouteInfo<void> {
/// generated route for
/// [_i11.SecuritySettingsPage]
class SecuritySettingsRoute extends _i15.PageRouteInfo<void> {
const SecuritySettingsRoute({List<_i15.PageRouteInfo>? children})
class SecuritySettingsRoute extends _i16.PageRouteInfo<void> {
const SecuritySettingsRoute({List<_i16.PageRouteInfo>? children})
: super(
SecuritySettingsRoute.name,
initialChildren: children,
@ -344,7 +346,7 @@ class SecuritySettingsRoute extends _i15.PageRouteInfo<void> {
static const String name = 'SecuritySettingsRoute';
static _i15.PageInfo page = _i15.PageInfo(
static _i16.PageInfo page = _i16.PageInfo(
name,
builder: (data) {
return const _i11.SecuritySettingsPage();
@ -354,8 +356,8 @@ class SecuritySettingsRoute extends _i15.PageRouteInfo<void> {
/// generated route for
/// [_i12.SettingsScreen]
class SettingsRoute extends _i15.PageRouteInfo<void> {
const SettingsRoute({List<_i15.PageRouteInfo>? children})
class SettingsRoute extends _i16.PageRouteInfo<void> {
const SettingsRoute({List<_i16.PageRouteInfo>? children})
: super(
SettingsRoute.name,
initialChildren: children,
@ -363,7 +365,7 @@ class SettingsRoute extends _i15.PageRouteInfo<void> {
static const String name = 'SettingsRoute';
static _i15.PageInfo page = _i15.PageInfo(
static _i16.PageInfo page = _i16.PageInfo(
name,
builder: (data) {
return const _i12.SettingsScreen();
@ -372,12 +374,31 @@ class SettingsRoute extends _i15.PageRouteInfo<void> {
}
/// generated route for
/// [_i13.SplashScreen]
class SplashRoute extends _i15.PageRouteInfo<SplashRouteArgs> {
/// [_i13.SettingsSelectionScreen]
class SettingsSelectionRoute extends _i16.PageRouteInfo<void> {
const SettingsSelectionRoute({List<_i16.PageRouteInfo>? children})
: super(
SettingsSelectionRoute.name,
initialChildren: children,
);
static const String name = 'SettingsSelectionRoute';
static _i16.PageInfo page = _i16.PageInfo(
name,
builder: (data) {
return const _i13.SettingsSelectionScreen();
},
);
}
/// generated route for
/// [_i14.SplashScreen]
class SplashRoute extends _i16.PageRouteInfo<SplashRouteArgs> {
SplashRoute({
dynamic Function(bool)? loggedIn,
_i20.Key? key,
List<_i15.PageRouteInfo>? children,
_i21.Key? key,
List<_i16.PageRouteInfo>? children,
}) : super(
SplashRoute.name,
args: SplashRouteArgs(
@ -389,12 +410,12 @@ class SplashRoute extends _i15.PageRouteInfo<SplashRouteArgs> {
static const String name = 'SplashRoute';
static _i15.PageInfo page = _i15.PageInfo(
static _i16.PageInfo page = _i16.PageInfo(
name,
builder: (data) {
final args =
data.argsAs<SplashRouteArgs>(orElse: () => const SplashRouteArgs());
return _i13.SplashScreen(
return _i14.SplashScreen(
loggedIn: args.loggedIn,
key: args.key,
);
@ -410,7 +431,7 @@ class SplashRouteArgs {
final dynamic Function(bool)? loggedIn;
final _i20.Key? key;
final _i21.Key? key;
@override
String toString() {
@ -419,12 +440,12 @@ class SplashRouteArgs {
}
/// generated route for
/// [_i14.SyncedScreen]
class SyncedRoute extends _i15.PageRouteInfo<SyncedRouteArgs> {
/// [_i15.SyncedScreen]
class SyncedRoute extends _i16.PageRouteInfo<SyncedRouteArgs> {
SyncedRoute({
_i20.ScrollController? navigationScrollController,
_i20.Key? key,
List<_i15.PageRouteInfo>? children,
_i21.ScrollController? navigationScrollController,
_i21.Key? key,
List<_i16.PageRouteInfo>? children,
}) : super(
SyncedRoute.name,
args: SyncedRouteArgs(
@ -436,12 +457,12 @@ class SyncedRoute extends _i15.PageRouteInfo<SyncedRouteArgs> {
static const String name = 'SyncedRoute';
static _i15.PageInfo page = _i15.PageInfo(
static _i16.PageInfo page = _i16.PageInfo(
name,
builder: (data) {
final args =
data.argsAs<SyncedRouteArgs>(orElse: () => const SyncedRouteArgs());
return _i14.SyncedScreen(
return _i15.SyncedScreen(
navigationScrollController: args.navigationScrollController,
key: args.key,
);
@ -455,9 +476,9 @@ class SyncedRouteArgs {
this.key,
});
final _i20.ScrollController? navigationScrollController;
final _i21.ScrollController? navigationScrollController;
final _i20.Key? key;
final _i21.Key? key;
@override
String toString() {