mirror of
https://github.com/gabehf/Fladder.git
synced 2026-03-16 18:56:00 -07:00
chore: Photoviewer now uses auto routing (#432)
Co-authored-by: PartyDonut <PartyDonut@users.noreply.github.com>
This commit is contained in:
parent
092836328f
commit
7628321e47
9 changed files with 201 additions and 141 deletions
|
|
@ -1,9 +1,10 @@
|
||||||
// ignore_for_file: public_member_api_docs, sort_constructors_first
|
|
||||||
import 'package:fladder/jellyfin/jellyfin_open_api.enums.swagger.dart';
|
|
||||||
import 'package:fladder/util/localization_helper.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import 'package:dart_mappable/dart_mappable.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
|
|
||||||
|
// ignore_for_file: public_member_api_docs, sort_constructors_first
|
||||||
|
import 'package:fladder/jellyfin/jellyfin_open_api.enums.swagger.dart';
|
||||||
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart' as dto;
|
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart' as dto;
|
||||||
import 'package:fladder/models/item_base_model.dart';
|
import 'package:fladder/models/item_base_model.dart';
|
||||||
import 'package:fladder/models/items/images_models.dart';
|
import 'package:fladder/models/items/images_models.dart';
|
||||||
|
|
@ -11,10 +12,9 @@ import 'package:fladder/models/items/item_shared_models.dart';
|
||||||
import 'package:fladder/models/items/overview_model.dart';
|
import 'package:fladder/models/items/overview_model.dart';
|
||||||
import 'package:fladder/providers/user_provider.dart';
|
import 'package:fladder/providers/user_provider.dart';
|
||||||
import 'package:fladder/screens/shared/fladder_snackbar.dart';
|
import 'package:fladder/screens/shared/fladder_snackbar.dart';
|
||||||
|
import 'package:fladder/util/localization_helper.dart';
|
||||||
import 'package:fladder/util/refresh_state.dart';
|
import 'package:fladder/util/refresh_state.dart';
|
||||||
|
|
||||||
import 'package:dart_mappable/dart_mappable.dart';
|
|
||||||
|
|
||||||
part 'photos_model.mapper.dart';
|
part 'photos_model.mapper.dart';
|
||||||
|
|
||||||
@MappableClass()
|
@MappableClass()
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,10 @@ import 'dart:developer';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import 'package:auto_route/auto_route.dart';
|
||||||
import 'package:chopper/chopper.dart';
|
import 'package:chopper/chopper.dart';
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:page_transition/page_transition.dart';
|
|
||||||
|
|
||||||
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart';
|
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart';
|
||||||
import 'package:fladder/models/collection_types.dart';
|
import 'package:fladder/models/collection_types.dart';
|
||||||
|
|
@ -23,7 +23,7 @@ import 'package:fladder/providers/library_filters_provider.dart';
|
||||||
import 'package:fladder/providers/service_provider.dart';
|
import 'package:fladder/providers/service_provider.dart';
|
||||||
import 'package:fladder/providers/settings/client_settings_provider.dart';
|
import 'package:fladder/providers/settings/client_settings_provider.dart';
|
||||||
import 'package:fladder/providers/user_provider.dart';
|
import 'package:fladder/providers/user_provider.dart';
|
||||||
import 'package:fladder/screens/photo_viewer/photo_viewer_screen.dart';
|
import 'package:fladder/routes/auto_router.gr.dart';
|
||||||
import 'package:fladder/screens/shared/fladder_snackbar.dart';
|
import 'package:fladder/screens/shared/fladder_snackbar.dart';
|
||||||
import 'package:fladder/util/item_base_model/play_item_helpers.dart';
|
import 'package:fladder/util/item_base_model/play_item_helpers.dart';
|
||||||
import 'package:fladder/util/list_extensions.dart';
|
import 'package:fladder/util/list_extensions.dart';
|
||||||
|
|
@ -657,14 +657,10 @@ class LibrarySearchNotifier extends StateNotifier<LibrarySearchModel> {
|
||||||
if (state.fetchingItems == true) {
|
if (state.fetchingItems == true) {
|
||||||
state = state.copyWith(fetchingItems: false);
|
state = state.copyWith(fetchingItems: false);
|
||||||
final newItemList = shuffle ? allItems.shuffled() : allItems;
|
final newItemList = shuffle ? allItems.shuffled() : allItems;
|
||||||
await Navigator.of(context, rootNavigator: true).push(
|
await context.navigateTo(PhotoViewerRoute(
|
||||||
PageTransition(
|
items: newItemList,
|
||||||
child: PhotoViewerScreen(
|
selected: selected?.id,
|
||||||
items: newItemList,
|
));
|
||||||
indexOfSelected: selected != null ? newItemList.indexOf(selected) : 0,
|
|
||||||
),
|
|
||||||
type: PageTransitionType.fade),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fladderSnackbar(context, title: context.localized.libraryFetchNoItemsFound);
|
fladderSnackbar(context, title: context.localized.libraryFetchNoItemsFound);
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ class AutoRouter extends RootStackRouter {
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
AutoRoute(page: LockRoute.page, path: '/locked'),
|
AutoRoute(page: LockRoute.page, path: '/locked'),
|
||||||
|
AutoRoute(page: PhotoViewerRoute.page, path: "/album"),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,13 @@
|
||||||
// coverage:ignore-file
|
// coverage:ignore-file
|
||||||
|
|
||||||
// ignore_for_file: no_leading_underscores_for_library_prefixes
|
// ignore_for_file: no_leading_underscores_for_library_prefixes
|
||||||
import 'package:auto_route/auto_route.dart' as _i17;
|
import 'dart:async' as _i23;
|
||||||
import 'package:fladder/models/item_base_model.dart' as _i18;
|
|
||||||
import 'package:fladder/models/items/photos_model.dart' as _i21;
|
import 'package:auto_route/auto_route.dart' as _i18;
|
||||||
|
import 'package:fladder/models/item_base_model.dart' as _i19;
|
||||||
|
import 'package:fladder/models/items/photos_model.dart' as _i22;
|
||||||
import 'package:fladder/models/library_search/library_search_options.dart'
|
import 'package:fladder/models/library_search/library_search_options.dart'
|
||||||
as _i20;
|
as _i21;
|
||||||
import 'package:fladder/routes/nested_details_screen.dart' as _i4;
|
import 'package:fladder/routes/nested_details_screen.dart' as _i4;
|
||||||
import 'package:fladder/screens/dashboard/dashboard_screen.dart' as _i3;
|
import 'package:fladder/screens/dashboard/dashboard_screen.dart' as _i3;
|
||||||
import 'package:fladder/screens/favourites/favourites_screen.dart' as _i5;
|
import 'package:fladder/screens/favourites/favourites_screen.dart' as _i5;
|
||||||
|
|
@ -22,22 +24,23 @@ import 'package:fladder/screens/library_search/library_search_screen.dart'
|
||||||
as _i8;
|
as _i8;
|
||||||
import 'package:fladder/screens/login/lock_screen.dart' as _i9;
|
import 'package:fladder/screens/login/lock_screen.dart' as _i9;
|
||||||
import 'package:fladder/screens/login/login_screen.dart' as _i10;
|
import 'package:fladder/screens/login/login_screen.dart' as _i10;
|
||||||
|
import 'package:fladder/screens/photo_viewer/photo_viewer_screen.dart' as _i11;
|
||||||
import 'package:fladder/screens/settings/about_settings_page.dart' as _i1;
|
import 'package:fladder/screens/settings/about_settings_page.dart' as _i1;
|
||||||
import 'package:fladder/screens/settings/client_settings_page.dart' as _i2;
|
import 'package:fladder/screens/settings/client_settings_page.dart' as _i2;
|
||||||
import 'package:fladder/screens/settings/player_settings_page.dart' as _i11;
|
import 'package:fladder/screens/settings/player_settings_page.dart' as _i12;
|
||||||
import 'package:fladder/screens/settings/security_settings_page.dart' as _i12;
|
import 'package:fladder/screens/settings/security_settings_page.dart' as _i13;
|
||||||
import 'package:fladder/screens/settings/settings_screen.dart' as _i13;
|
import 'package:fladder/screens/settings/settings_screen.dart' as _i14;
|
||||||
import 'package:fladder/screens/settings/settings_selection_screen.dart'
|
import 'package:fladder/screens/settings/settings_selection_screen.dart'
|
||||||
as _i14;
|
as _i15;
|
||||||
import 'package:fladder/screens/splash_screen.dart' as _i15;
|
import 'package:fladder/screens/splash_screen.dart' as _i16;
|
||||||
import 'package:fladder/screens/syncing/synced_screen.dart' as _i16;
|
import 'package:fladder/screens/syncing/synced_screen.dart' as _i17;
|
||||||
import 'package:flutter/foundation.dart' as _i19;
|
import 'package:flutter/foundation.dart' as _i20;
|
||||||
import 'package:flutter/material.dart' as _i22;
|
import 'package:flutter/material.dart' as _i24;
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i1.AboutSettingsPage]
|
/// [_i1.AboutSettingsPage]
|
||||||
class AboutSettingsRoute extends _i17.PageRouteInfo<void> {
|
class AboutSettingsRoute extends _i18.PageRouteInfo<void> {
|
||||||
const AboutSettingsRoute({List<_i17.PageRouteInfo>? children})
|
const AboutSettingsRoute({List<_i18.PageRouteInfo>? children})
|
||||||
: super(
|
: super(
|
||||||
AboutSettingsRoute.name,
|
AboutSettingsRoute.name,
|
||||||
initialChildren: children,
|
initialChildren: children,
|
||||||
|
|
@ -45,7 +48,7 @@ class AboutSettingsRoute extends _i17.PageRouteInfo<void> {
|
||||||
|
|
||||||
static const String name = 'AboutSettingsRoute';
|
static const String name = 'AboutSettingsRoute';
|
||||||
|
|
||||||
static _i17.PageInfo page = _i17.PageInfo(
|
static _i18.PageInfo page = _i18.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i1.AboutSettingsPage();
|
return const _i1.AboutSettingsPage();
|
||||||
|
|
@ -55,8 +58,8 @@ class AboutSettingsRoute extends _i17.PageRouteInfo<void> {
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i2.ClientSettingsPage]
|
/// [_i2.ClientSettingsPage]
|
||||||
class ClientSettingsRoute extends _i17.PageRouteInfo<void> {
|
class ClientSettingsRoute extends _i18.PageRouteInfo<void> {
|
||||||
const ClientSettingsRoute({List<_i17.PageRouteInfo>? children})
|
const ClientSettingsRoute({List<_i18.PageRouteInfo>? children})
|
||||||
: super(
|
: super(
|
||||||
ClientSettingsRoute.name,
|
ClientSettingsRoute.name,
|
||||||
initialChildren: children,
|
initialChildren: children,
|
||||||
|
|
@ -64,7 +67,7 @@ class ClientSettingsRoute extends _i17.PageRouteInfo<void> {
|
||||||
|
|
||||||
static const String name = 'ClientSettingsRoute';
|
static const String name = 'ClientSettingsRoute';
|
||||||
|
|
||||||
static _i17.PageInfo page = _i17.PageInfo(
|
static _i18.PageInfo page = _i18.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i2.ClientSettingsPage();
|
return const _i2.ClientSettingsPage();
|
||||||
|
|
@ -74,8 +77,8 @@ class ClientSettingsRoute extends _i17.PageRouteInfo<void> {
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i3.DashboardScreen]
|
/// [_i3.DashboardScreen]
|
||||||
class DashboardRoute extends _i17.PageRouteInfo<void> {
|
class DashboardRoute extends _i18.PageRouteInfo<void> {
|
||||||
const DashboardRoute({List<_i17.PageRouteInfo>? children})
|
const DashboardRoute({List<_i18.PageRouteInfo>? children})
|
||||||
: super(
|
: super(
|
||||||
DashboardRoute.name,
|
DashboardRoute.name,
|
||||||
initialChildren: children,
|
initialChildren: children,
|
||||||
|
|
@ -83,7 +86,7 @@ class DashboardRoute extends _i17.PageRouteInfo<void> {
|
||||||
|
|
||||||
static const String name = 'DashboardRoute';
|
static const String name = 'DashboardRoute';
|
||||||
|
|
||||||
static _i17.PageInfo page = _i17.PageInfo(
|
static _i18.PageInfo page = _i18.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i3.DashboardScreen();
|
return const _i3.DashboardScreen();
|
||||||
|
|
@ -93,12 +96,12 @@ class DashboardRoute extends _i17.PageRouteInfo<void> {
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i4.DetailsScreen]
|
/// [_i4.DetailsScreen]
|
||||||
class DetailsRoute extends _i17.PageRouteInfo<DetailsRouteArgs> {
|
class DetailsRoute extends _i18.PageRouteInfo<DetailsRouteArgs> {
|
||||||
DetailsRoute({
|
DetailsRoute({
|
||||||
String id = '',
|
String id = '',
|
||||||
_i18.ItemBaseModel? item,
|
_i19.ItemBaseModel? item,
|
||||||
_i19.Key? key,
|
_i20.Key? key,
|
||||||
List<_i17.PageRouteInfo>? children,
|
List<_i18.PageRouteInfo>? children,
|
||||||
}) : super(
|
}) : super(
|
||||||
DetailsRoute.name,
|
DetailsRoute.name,
|
||||||
args: DetailsRouteArgs(
|
args: DetailsRouteArgs(
|
||||||
|
|
@ -112,7 +115,7 @@ class DetailsRoute extends _i17.PageRouteInfo<DetailsRouteArgs> {
|
||||||
|
|
||||||
static const String name = 'DetailsRoute';
|
static const String name = 'DetailsRoute';
|
||||||
|
|
||||||
static _i17.PageInfo page = _i17.PageInfo(
|
static _i18.PageInfo page = _i18.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
final queryParams = data.queryParams;
|
final queryParams = data.queryParams;
|
||||||
|
|
@ -140,9 +143,9 @@ class DetailsRouteArgs {
|
||||||
|
|
||||||
final String id;
|
final String id;
|
||||||
|
|
||||||
final _i18.ItemBaseModel? item;
|
final _i19.ItemBaseModel? item;
|
||||||
|
|
||||||
final _i19.Key? key;
|
final _i20.Key? key;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
|
|
@ -152,8 +155,8 @@ class DetailsRouteArgs {
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i5.FavouritesScreen]
|
/// [_i5.FavouritesScreen]
|
||||||
class FavouritesRoute extends _i17.PageRouteInfo<void> {
|
class FavouritesRoute extends _i18.PageRouteInfo<void> {
|
||||||
const FavouritesRoute({List<_i17.PageRouteInfo>? children})
|
const FavouritesRoute({List<_i18.PageRouteInfo>? children})
|
||||||
: super(
|
: super(
|
||||||
FavouritesRoute.name,
|
FavouritesRoute.name,
|
||||||
initialChildren: children,
|
initialChildren: children,
|
||||||
|
|
@ -161,7 +164,7 @@ class FavouritesRoute extends _i17.PageRouteInfo<void> {
|
||||||
|
|
||||||
static const String name = 'FavouritesRoute';
|
static const String name = 'FavouritesRoute';
|
||||||
|
|
||||||
static _i17.PageInfo page = _i17.PageInfo(
|
static _i18.PageInfo page = _i18.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i5.FavouritesScreen();
|
return const _i5.FavouritesScreen();
|
||||||
|
|
@ -171,8 +174,8 @@ class FavouritesRoute extends _i17.PageRouteInfo<void> {
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i6.HomeScreen]
|
/// [_i6.HomeScreen]
|
||||||
class HomeRoute extends _i17.PageRouteInfo<void> {
|
class HomeRoute extends _i18.PageRouteInfo<void> {
|
||||||
const HomeRoute({List<_i17.PageRouteInfo>? children})
|
const HomeRoute({List<_i18.PageRouteInfo>? children})
|
||||||
: super(
|
: super(
|
||||||
HomeRoute.name,
|
HomeRoute.name,
|
||||||
initialChildren: children,
|
initialChildren: children,
|
||||||
|
|
@ -180,7 +183,7 @@ class HomeRoute extends _i17.PageRouteInfo<void> {
|
||||||
|
|
||||||
static const String name = 'HomeRoute';
|
static const String name = 'HomeRoute';
|
||||||
|
|
||||||
static _i17.PageInfo page = _i17.PageInfo(
|
static _i18.PageInfo page = _i18.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i6.HomeScreen();
|
return const _i6.HomeScreen();
|
||||||
|
|
@ -190,8 +193,8 @@ class HomeRoute extends _i17.PageRouteInfo<void> {
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i7.LibraryScreen]
|
/// [_i7.LibraryScreen]
|
||||||
class LibraryRoute extends _i17.PageRouteInfo<void> {
|
class LibraryRoute extends _i18.PageRouteInfo<void> {
|
||||||
const LibraryRoute({List<_i17.PageRouteInfo>? children})
|
const LibraryRoute({List<_i18.PageRouteInfo>? children})
|
||||||
: super(
|
: super(
|
||||||
LibraryRoute.name,
|
LibraryRoute.name,
|
||||||
initialChildren: children,
|
initialChildren: children,
|
||||||
|
|
@ -199,7 +202,7 @@ class LibraryRoute extends _i17.PageRouteInfo<void> {
|
||||||
|
|
||||||
static const String name = 'LibraryRoute';
|
static const String name = 'LibraryRoute';
|
||||||
|
|
||||||
static _i17.PageInfo page = _i17.PageInfo(
|
static _i18.PageInfo page = _i18.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i7.LibraryScreen();
|
return const _i7.LibraryScreen();
|
||||||
|
|
@ -209,16 +212,16 @@ class LibraryRoute extends _i17.PageRouteInfo<void> {
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i8.LibrarySearchScreen]
|
/// [_i8.LibrarySearchScreen]
|
||||||
class LibrarySearchRoute extends _i17.PageRouteInfo<LibrarySearchRouteArgs> {
|
class LibrarySearchRoute extends _i18.PageRouteInfo<LibrarySearchRouteArgs> {
|
||||||
LibrarySearchRoute({
|
LibrarySearchRoute({
|
||||||
String? viewModelId,
|
String? viewModelId,
|
||||||
List<String>? folderId,
|
List<String>? folderId,
|
||||||
bool? favourites,
|
bool? favourites,
|
||||||
_i20.SortingOrder? sortOrder,
|
_i21.SortingOrder? sortOrder,
|
||||||
_i20.SortingOptions? sortingOptions,
|
_i21.SortingOptions? sortingOptions,
|
||||||
_i21.PhotoModel? photoToView,
|
_i22.PhotoModel? photoToView,
|
||||||
_i19.Key? key,
|
_i20.Key? key,
|
||||||
List<_i17.PageRouteInfo>? children,
|
List<_i18.PageRouteInfo>? children,
|
||||||
}) : super(
|
}) : super(
|
||||||
LibrarySearchRoute.name,
|
LibrarySearchRoute.name,
|
||||||
args: LibrarySearchRouteArgs(
|
args: LibrarySearchRouteArgs(
|
||||||
|
|
@ -242,7 +245,7 @@ class LibrarySearchRoute extends _i17.PageRouteInfo<LibrarySearchRouteArgs> {
|
||||||
|
|
||||||
static const String name = 'LibrarySearchRoute';
|
static const String name = 'LibrarySearchRoute';
|
||||||
|
|
||||||
static _i17.PageInfo page = _i17.PageInfo(
|
static _i18.PageInfo page = _i18.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
final queryParams = data.queryParams;
|
final queryParams = data.queryParams;
|
||||||
|
|
@ -284,13 +287,13 @@ class LibrarySearchRouteArgs {
|
||||||
|
|
||||||
final bool? favourites;
|
final bool? favourites;
|
||||||
|
|
||||||
final _i20.SortingOrder? sortOrder;
|
final _i21.SortingOrder? sortOrder;
|
||||||
|
|
||||||
final _i20.SortingOptions? sortingOptions;
|
final _i21.SortingOptions? sortingOptions;
|
||||||
|
|
||||||
final _i21.PhotoModel? photoToView;
|
final _i22.PhotoModel? photoToView;
|
||||||
|
|
||||||
final _i19.Key? key;
|
final _i20.Key? key;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
|
|
@ -300,8 +303,8 @@ class LibrarySearchRouteArgs {
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i9.LockScreen]
|
/// [_i9.LockScreen]
|
||||||
class LockRoute extends _i17.PageRouteInfo<void> {
|
class LockRoute extends _i18.PageRouteInfo<void> {
|
||||||
const LockRoute({List<_i17.PageRouteInfo>? children})
|
const LockRoute({List<_i18.PageRouteInfo>? children})
|
||||||
: super(
|
: super(
|
||||||
LockRoute.name,
|
LockRoute.name,
|
||||||
initialChildren: children,
|
initialChildren: children,
|
||||||
|
|
@ -309,7 +312,7 @@ class LockRoute extends _i17.PageRouteInfo<void> {
|
||||||
|
|
||||||
static const String name = 'LockRoute';
|
static const String name = 'LockRoute';
|
||||||
|
|
||||||
static _i17.PageInfo page = _i17.PageInfo(
|
static _i18.PageInfo page = _i18.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i9.LockScreen();
|
return const _i9.LockScreen();
|
||||||
|
|
@ -319,8 +322,8 @@ class LockRoute extends _i17.PageRouteInfo<void> {
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i10.LoginScreen]
|
/// [_i10.LoginScreen]
|
||||||
class LoginRoute extends _i17.PageRouteInfo<void> {
|
class LoginRoute extends _i18.PageRouteInfo<void> {
|
||||||
const LoginRoute({List<_i17.PageRouteInfo>? children})
|
const LoginRoute({List<_i18.PageRouteInfo>? children})
|
||||||
: super(
|
: super(
|
||||||
LoginRoute.name,
|
LoginRoute.name,
|
||||||
initialChildren: children,
|
initialChildren: children,
|
||||||
|
|
@ -328,7 +331,7 @@ class LoginRoute extends _i17.PageRouteInfo<void> {
|
||||||
|
|
||||||
static const String name = 'LoginRoute';
|
static const String name = 'LoginRoute';
|
||||||
|
|
||||||
static _i17.PageInfo page = _i17.PageInfo(
|
static _i18.PageInfo page = _i18.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i10.LoginScreen();
|
return const _i10.LoginScreen();
|
||||||
|
|
@ -337,9 +340,71 @@ class LoginRoute extends _i17.PageRouteInfo<void> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i11.PlayerSettingsPage]
|
/// [_i11.PhotoViewerScreen]
|
||||||
class PlayerSettingsRoute extends _i17.PageRouteInfo<void> {
|
class PhotoViewerRoute extends _i18.PageRouteInfo<PhotoViewerRouteArgs> {
|
||||||
const PlayerSettingsRoute({List<_i17.PageRouteInfo>? children})
|
PhotoViewerRoute({
|
||||||
|
List<_i22.PhotoModel>? items,
|
||||||
|
String? selected,
|
||||||
|
_i23.Future<List<_i22.PhotoModel>>? loadingItems,
|
||||||
|
_i24.Key? key,
|
||||||
|
List<_i18.PageRouteInfo>? children,
|
||||||
|
}) : super(
|
||||||
|
PhotoViewerRoute.name,
|
||||||
|
args: PhotoViewerRouteArgs(
|
||||||
|
items: items,
|
||||||
|
selected: selected,
|
||||||
|
loadingItems: loadingItems,
|
||||||
|
key: key,
|
||||||
|
),
|
||||||
|
rawQueryParams: {'selectedId': selected},
|
||||||
|
initialChildren: children,
|
||||||
|
);
|
||||||
|
|
||||||
|
static const String name = 'PhotoViewerRoute';
|
||||||
|
|
||||||
|
static _i18.PageInfo page = _i18.PageInfo(
|
||||||
|
name,
|
||||||
|
builder: (data) {
|
||||||
|
final queryParams = data.queryParams;
|
||||||
|
final args = data.argsAs<PhotoViewerRouteArgs>(
|
||||||
|
orElse: () => PhotoViewerRouteArgs(
|
||||||
|
selected: queryParams.optString('selectedId')));
|
||||||
|
return _i11.PhotoViewerScreen(
|
||||||
|
items: args.items,
|
||||||
|
selected: args.selected,
|
||||||
|
loadingItems: args.loadingItems,
|
||||||
|
key: args.key,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
class PhotoViewerRouteArgs {
|
||||||
|
const PhotoViewerRouteArgs({
|
||||||
|
this.items,
|
||||||
|
this.selected,
|
||||||
|
this.loadingItems,
|
||||||
|
this.key,
|
||||||
|
});
|
||||||
|
|
||||||
|
final List<_i22.PhotoModel>? items;
|
||||||
|
|
||||||
|
final String? selected;
|
||||||
|
|
||||||
|
final _i23.Future<List<_i22.PhotoModel>>? loadingItems;
|
||||||
|
|
||||||
|
final _i24.Key? key;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'PhotoViewerRouteArgs{items: $items, selected: $selected, loadingItems: $loadingItems, key: $key}';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// generated route for
|
||||||
|
/// [_i12.PlayerSettingsPage]
|
||||||
|
class PlayerSettingsRoute extends _i18.PageRouteInfo<void> {
|
||||||
|
const PlayerSettingsRoute({List<_i18.PageRouteInfo>? children})
|
||||||
: super(
|
: super(
|
||||||
PlayerSettingsRoute.name,
|
PlayerSettingsRoute.name,
|
||||||
initialChildren: children,
|
initialChildren: children,
|
||||||
|
|
@ -347,18 +412,18 @@ class PlayerSettingsRoute extends _i17.PageRouteInfo<void> {
|
||||||
|
|
||||||
static const String name = 'PlayerSettingsRoute';
|
static const String name = 'PlayerSettingsRoute';
|
||||||
|
|
||||||
static _i17.PageInfo page = _i17.PageInfo(
|
static _i18.PageInfo page = _i18.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i11.PlayerSettingsPage();
|
return const _i12.PlayerSettingsPage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i12.SecuritySettingsPage]
|
/// [_i13.SecuritySettingsPage]
|
||||||
class SecuritySettingsRoute extends _i17.PageRouteInfo<void> {
|
class SecuritySettingsRoute extends _i18.PageRouteInfo<void> {
|
||||||
const SecuritySettingsRoute({List<_i17.PageRouteInfo>? children})
|
const SecuritySettingsRoute({List<_i18.PageRouteInfo>? children})
|
||||||
: super(
|
: super(
|
||||||
SecuritySettingsRoute.name,
|
SecuritySettingsRoute.name,
|
||||||
initialChildren: children,
|
initialChildren: children,
|
||||||
|
|
@ -366,18 +431,18 @@ class SecuritySettingsRoute extends _i17.PageRouteInfo<void> {
|
||||||
|
|
||||||
static const String name = 'SecuritySettingsRoute';
|
static const String name = 'SecuritySettingsRoute';
|
||||||
|
|
||||||
static _i17.PageInfo page = _i17.PageInfo(
|
static _i18.PageInfo page = _i18.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i12.SecuritySettingsPage();
|
return const _i13.SecuritySettingsPage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i13.SettingsScreen]
|
/// [_i14.SettingsScreen]
|
||||||
class SettingsRoute extends _i17.PageRouteInfo<void> {
|
class SettingsRoute extends _i18.PageRouteInfo<void> {
|
||||||
const SettingsRoute({List<_i17.PageRouteInfo>? children})
|
const SettingsRoute({List<_i18.PageRouteInfo>? children})
|
||||||
: super(
|
: super(
|
||||||
SettingsRoute.name,
|
SettingsRoute.name,
|
||||||
initialChildren: children,
|
initialChildren: children,
|
||||||
|
|
@ -385,18 +450,18 @@ class SettingsRoute extends _i17.PageRouteInfo<void> {
|
||||||
|
|
||||||
static const String name = 'SettingsRoute';
|
static const String name = 'SettingsRoute';
|
||||||
|
|
||||||
static _i17.PageInfo page = _i17.PageInfo(
|
static _i18.PageInfo page = _i18.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i13.SettingsScreen();
|
return const _i14.SettingsScreen();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i14.SettingsSelectionScreen]
|
/// [_i15.SettingsSelectionScreen]
|
||||||
class SettingsSelectionRoute extends _i17.PageRouteInfo<void> {
|
class SettingsSelectionRoute extends _i18.PageRouteInfo<void> {
|
||||||
const SettingsSelectionRoute({List<_i17.PageRouteInfo>? children})
|
const SettingsSelectionRoute({List<_i18.PageRouteInfo>? children})
|
||||||
: super(
|
: super(
|
||||||
SettingsSelectionRoute.name,
|
SettingsSelectionRoute.name,
|
||||||
initialChildren: children,
|
initialChildren: children,
|
||||||
|
|
@ -404,21 +469,21 @@ class SettingsSelectionRoute extends _i17.PageRouteInfo<void> {
|
||||||
|
|
||||||
static const String name = 'SettingsSelectionRoute';
|
static const String name = 'SettingsSelectionRoute';
|
||||||
|
|
||||||
static _i17.PageInfo page = _i17.PageInfo(
|
static _i18.PageInfo page = _i18.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i14.SettingsSelectionScreen();
|
return const _i15.SettingsSelectionScreen();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i15.SplashScreen]
|
/// [_i16.SplashScreen]
|
||||||
class SplashRoute extends _i17.PageRouteInfo<SplashRouteArgs> {
|
class SplashRoute extends _i18.PageRouteInfo<SplashRouteArgs> {
|
||||||
SplashRoute({
|
SplashRoute({
|
||||||
dynamic Function(bool)? loggedIn,
|
dynamic Function(bool)? loggedIn,
|
||||||
_i22.Key? key,
|
_i24.Key? key,
|
||||||
List<_i17.PageRouteInfo>? children,
|
List<_i18.PageRouteInfo>? children,
|
||||||
}) : super(
|
}) : super(
|
||||||
SplashRoute.name,
|
SplashRoute.name,
|
||||||
args: SplashRouteArgs(
|
args: SplashRouteArgs(
|
||||||
|
|
@ -430,12 +495,12 @@ class SplashRoute extends _i17.PageRouteInfo<SplashRouteArgs> {
|
||||||
|
|
||||||
static const String name = 'SplashRoute';
|
static const String name = 'SplashRoute';
|
||||||
|
|
||||||
static _i17.PageInfo page = _i17.PageInfo(
|
static _i18.PageInfo page = _i18.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
final args =
|
final args =
|
||||||
data.argsAs<SplashRouteArgs>(orElse: () => const SplashRouteArgs());
|
data.argsAs<SplashRouteArgs>(orElse: () => const SplashRouteArgs());
|
||||||
return _i15.SplashScreen(
|
return _i16.SplashScreen(
|
||||||
loggedIn: args.loggedIn,
|
loggedIn: args.loggedIn,
|
||||||
key: args.key,
|
key: args.key,
|
||||||
);
|
);
|
||||||
|
|
@ -451,7 +516,7 @@ class SplashRouteArgs {
|
||||||
|
|
||||||
final dynamic Function(bool)? loggedIn;
|
final dynamic Function(bool)? loggedIn;
|
||||||
|
|
||||||
final _i22.Key? key;
|
final _i24.Key? key;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
|
|
@ -460,12 +525,12 @@ class SplashRouteArgs {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i16.SyncedScreen]
|
/// [_i17.SyncedScreen]
|
||||||
class SyncedRoute extends _i17.PageRouteInfo<SyncedRouteArgs> {
|
class SyncedRoute extends _i18.PageRouteInfo<SyncedRouteArgs> {
|
||||||
SyncedRoute({
|
SyncedRoute({
|
||||||
_i22.ScrollController? navigationScrollController,
|
_i24.ScrollController? navigationScrollController,
|
||||||
_i19.Key? key,
|
_i20.Key? key,
|
||||||
List<_i17.PageRouteInfo>? children,
|
List<_i18.PageRouteInfo>? children,
|
||||||
}) : super(
|
}) : super(
|
||||||
SyncedRoute.name,
|
SyncedRoute.name,
|
||||||
args: SyncedRouteArgs(
|
args: SyncedRouteArgs(
|
||||||
|
|
@ -477,12 +542,12 @@ class SyncedRoute extends _i17.PageRouteInfo<SyncedRouteArgs> {
|
||||||
|
|
||||||
static const String name = 'SyncedRoute';
|
static const String name = 'SyncedRoute';
|
||||||
|
|
||||||
static _i17.PageInfo page = _i17.PageInfo(
|
static _i18.PageInfo page = _i18.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
final args =
|
final args =
|
||||||
data.argsAs<SyncedRouteArgs>(orElse: () => const SyncedRouteArgs());
|
data.argsAs<SyncedRouteArgs>(orElse: () => const SyncedRouteArgs());
|
||||||
return _i16.SyncedScreen(
|
return _i17.SyncedScreen(
|
||||||
navigationScrollController: args.navigationScrollController,
|
navigationScrollController: args.navigationScrollController,
|
||||||
key: args.key,
|
key: args.key,
|
||||||
);
|
);
|
||||||
|
|
@ -496,9 +561,9 @@ class SyncedRouteArgs {
|
||||||
this.key,
|
this.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
final _i22.ScrollController? navigationScrollController;
|
final _i24.ScrollController? navigationScrollController;
|
||||||
|
|
||||||
final _i19.Key? key;
|
final _i20.Key? key;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,14 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import 'package:auto_route/auto_route.dart';
|
||||||
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
|
|
||||||
import 'package:fladder/models/item_base_model.dart';
|
import 'package:fladder/models/item_base_model.dart';
|
||||||
import 'package:fladder/models/items/photos_model.dart';
|
import 'package:fladder/models/items/photos_model.dart';
|
||||||
import 'package:fladder/providers/items/folder_details_provider.dart';
|
import 'package:fladder/providers/items/folder_details_provider.dart';
|
||||||
import 'package:fladder/screens/photo_viewer/photo_viewer_screen.dart';
|
import 'package:fladder/routes/auto_router.gr.dart';
|
||||||
import 'package:fladder/screens/shared/media/poster_grid.dart';
|
import 'package:fladder/screens/shared/media/poster_grid.dart';
|
||||||
import 'package:fladder/widgets/shared/pull_to_refresh.dart';
|
import 'package:fladder/widgets/shared/pull_to_refresh.dart';
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
||||||
import 'package:page_transition/page_transition.dart';
|
|
||||||
|
|
||||||
class FolderDetailScreen extends ConsumerWidget {
|
class FolderDetailScreen extends ConsumerWidget {
|
||||||
final ItemBaseModel item;
|
final ItemBaseModel item;
|
||||||
|
|
@ -33,12 +35,10 @@ class FolderDetailScreen extends ConsumerWidget {
|
||||||
switch (item) {
|
switch (item) {
|
||||||
case PhotoModel photoModel:
|
case PhotoModel photoModel:
|
||||||
final photoItems = details?.items.whereType<PhotoModel>().toList();
|
final photoItems = details?.items.whereType<PhotoModel>().toList();
|
||||||
await Navigator.of(context, rootNavigator: true).push(PageTransition(
|
await context.navigateTo(PhotoViewerRoute(
|
||||||
child: PhotoViewerScreen(
|
items: photoItems,
|
||||||
items: photoItems,
|
selected: photoModel.id,
|
||||||
indexOfSelected: photoItems?.indexOf(photoModel) ?? 0,
|
));
|
||||||
),
|
|
||||||
type: PageTransitionType.fade));
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (context.mounted) {
|
if (context.mounted) {
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,13 @@ import 'dart:ui';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import 'package:auto_route/auto_route.dart';
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
|
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
|
||||||
import 'package:flutter_sticky_header/flutter_sticky_header.dart';
|
import 'package:flutter_sticky_header/flutter_sticky_header.dart';
|
||||||
import 'package:iconsax_plus/iconsax_plus.dart';
|
import 'package:iconsax_plus/iconsax_plus.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:page_transition/page_transition.dart';
|
|
||||||
import 'package:sliver_tools/sliver_tools.dart';
|
import 'package:sliver_tools/sliver_tools.dart';
|
||||||
|
|
||||||
import 'package:fladder/models/boxset_model.dart';
|
import 'package:fladder/models/boxset_model.dart';
|
||||||
|
|
@ -18,7 +18,7 @@ import 'package:fladder/models/library_search/library_search_options.dart';
|
||||||
import 'package:fladder/models/playlist_model.dart';
|
import 'package:fladder/models/playlist_model.dart';
|
||||||
import 'package:fladder/providers/library_search_provider.dart';
|
import 'package:fladder/providers/library_search_provider.dart';
|
||||||
import 'package:fladder/providers/settings/client_settings_provider.dart';
|
import 'package:fladder/providers/settings/client_settings_provider.dart';
|
||||||
import 'package:fladder/screens/photo_viewer/photo_viewer_screen.dart';
|
import 'package:fladder/routes/auto_router.gr.dart';
|
||||||
import 'package:fladder/screens/shared/media/poster_list_item.dart';
|
import 'package:fladder/screens/shared/media/poster_list_item.dart';
|
||||||
import 'package:fladder/screens/shared/media/poster_widget.dart';
|
import 'package:fladder/screens/shared/media/poster_widget.dart';
|
||||||
import 'package:fladder/util/adaptive_layout/adaptive_layout.dart';
|
import 'package:fladder/util/adaptive_layout/adaptive_layout.dart';
|
||||||
|
|
@ -336,15 +336,11 @@ class LibraryViews extends ConsumerWidget {
|
||||||
case PhotoModel _:
|
case PhotoModel _:
|
||||||
final photoList = items.whereType<PhotoModel>().toList();
|
final photoList = items.whereType<PhotoModel>().toList();
|
||||||
if (context.mounted) {
|
if (context.mounted) {
|
||||||
await Navigator.of(context, rootNavigator: true).push(
|
await context.router.push(PhotoViewerRoute(
|
||||||
PageTransition(
|
items: photoList,
|
||||||
child: PhotoViewerScreen(
|
loadingItems: ref.read(librarySearchProvider(key).notifier).fetchGallery(),
|
||||||
items: photoList,
|
selected: item.id,
|
||||||
loadingItems: ref.read(librarySearchProvider(key).notifier).fetchGallery(),
|
));
|
||||||
indexOfSelected: photoList.indexWhere((element) => element.id == item.id),
|
|
||||||
),
|
|
||||||
type: PageTransitionType.fade),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
if (context.mounted) context.refreshData();
|
if (context.mounted) context.refreshData();
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,9 @@ class _PhotoViewerControllsState extends ConsumerState<PhotoViewerControls> with
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
timerController.dispose();
|
timerController.dispose();
|
||||||
fullScreenHelper.closeFullScreen(ref);
|
if (context.mounted) {
|
||||||
|
fullScreenHelper.closeFullScreen(ref);
|
||||||
|
}
|
||||||
windowManager.removeListener(this);
|
windowManager.removeListener(this);
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,12 @@ import 'dart:async';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
|
||||||
|
import 'package:auto_route/annotations.dart';
|
||||||
import 'package:cached_network_image/cached_network_image.dart';
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
import 'package:extended_image/extended_image.dart';
|
import 'package:extended_image/extended_image.dart';
|
||||||
import 'package:iconsax_plus/iconsax_plus.dart';
|
|
||||||
import 'package:flutter_blurhash/flutter_blurhash.dart';
|
import 'package:flutter_blurhash/flutter_blurhash.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
|
import 'package:iconsax_plus/iconsax_plus.dart';
|
||||||
|
|
||||||
import 'package:fladder/models/item_base_model.dart';
|
import 'package:fladder/models/item_base_model.dart';
|
||||||
import 'package:fladder/models/items/photos_model.dart';
|
import 'package:fladder/models/items/photos_model.dart';
|
||||||
|
|
@ -29,13 +30,14 @@ import 'package:fladder/widgets/shared/hover_widget.dart';
|
||||||
import 'package:fladder/widgets/shared/item_actions.dart';
|
import 'package:fladder/widgets/shared/item_actions.dart';
|
||||||
import 'package:fladder/widgets/shared/modal_bottom_sheet.dart';
|
import 'package:fladder/widgets/shared/modal_bottom_sheet.dart';
|
||||||
|
|
||||||
|
@RoutePage()
|
||||||
class PhotoViewerScreen extends ConsumerStatefulWidget {
|
class PhotoViewerScreen extends ConsumerStatefulWidget {
|
||||||
final List<PhotoModel>? items;
|
final List<PhotoModel>? items;
|
||||||
final int indexOfSelected;
|
final String? selected;
|
||||||
final Future<List<PhotoModel>>? loadingItems;
|
final Future<List<PhotoModel>>? loadingItems;
|
||||||
const PhotoViewerScreen({
|
const PhotoViewerScreen({
|
||||||
this.items,
|
this.items,
|
||||||
this.indexOfSelected = 0,
|
@QueryParam("selectedId") this.selected,
|
||||||
this.loadingItems,
|
this.loadingItems,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
|
@ -46,9 +48,9 @@ class PhotoViewerScreen extends ConsumerStatefulWidget {
|
||||||
|
|
||||||
class _PhotoViewerScreenState extends ConsumerState<PhotoViewerScreen> with WidgetsBindingObserver {
|
class _PhotoViewerScreenState extends ConsumerState<PhotoViewerScreen> with WidgetsBindingObserver {
|
||||||
late List<PhotoModel> photos = widget.items ?? [];
|
late List<PhotoModel> photos = widget.items ?? [];
|
||||||
late final ExtendedPageController controller = ExtendedPageController(initialPage: widget.indexOfSelected);
|
late int currentPage = photos.indexWhere((value) => value.id == widget.selected).clamp(0, photos.length - 1);
|
||||||
|
late final ExtendedPageController controller = ExtendedPageController(initialPage: currentPage);
|
||||||
double currentScale = 1.0;
|
double currentScale = 1.0;
|
||||||
late int currentPage = widget.indexOfSelected.clamp(0, photos.length - 1);
|
|
||||||
bool showInterface = true;
|
bool showInterface = true;
|
||||||
bool toolbarHover = false;
|
bool toolbarHover = false;
|
||||||
|
|
||||||
|
|
@ -78,7 +80,7 @@ class _PhotoViewerScreenState extends ConsumerState<PhotoViewerScreen> with Widg
|
||||||
WidgetsBinding.instance.addObserver(this);
|
WidgetsBinding.instance.addObserver(this);
|
||||||
WidgetsBinding.instance.addPostFrameCallback(
|
WidgetsBinding.instance.addPostFrameCallback(
|
||||||
(timeStamp) async {
|
(timeStamp) async {
|
||||||
cacheNeighbors(widget.indexOfSelected, 2);
|
cacheNeighbors(currentPage, 2);
|
||||||
if (widget.loadingItems != null) {
|
if (widget.loadingItems != null) {
|
||||||
setState(() {
|
setState(() {
|
||||||
loadingItems = true;
|
loadingItems = true;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import 'package:auto_route/auto_route.dart';
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
|
|
||||||
|
|
@ -13,8 +14,8 @@ import 'package:fladder/providers/api_provider.dart';
|
||||||
import 'package:fladder/providers/book_viewer_provider.dart';
|
import 'package:fladder/providers/book_viewer_provider.dart';
|
||||||
import 'package:fladder/providers/items/book_details_provider.dart';
|
import 'package:fladder/providers/items/book_details_provider.dart';
|
||||||
import 'package:fladder/providers/video_player_provider.dart';
|
import 'package:fladder/providers/video_player_provider.dart';
|
||||||
|
import 'package:fladder/routes/auto_router.gr.dart';
|
||||||
import 'package:fladder/screens/book_viewer/book_viewer_screen.dart';
|
import 'package:fladder/screens/book_viewer/book_viewer_screen.dart';
|
||||||
import 'package:fladder/screens/photo_viewer/photo_viewer_screen.dart';
|
|
||||||
import 'package:fladder/screens/shared/fladder_snackbar.dart';
|
import 'package:fladder/screens/shared/fladder_snackbar.dart';
|
||||||
import 'package:fladder/screens/video_player/video_player.dart';
|
import 'package:fladder/screens/video_player/video_player.dart';
|
||||||
import 'package:fladder/util/adaptive_layout/adaptive_layout.dart';
|
import 'package:fladder/util/adaptive_layout/adaptive_layout.dart';
|
||||||
|
|
@ -170,13 +171,10 @@ extension PhotoAlbumExtension on PhotoAlbumModel? {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await Navigator.of(context, rootNavigator: true).push(
|
await context.navigateTo(PhotoViewerRoute(
|
||||||
MaterialPageRoute(
|
items: photos.toList(),
|
||||||
builder: (context) => PhotoViewerScreen(
|
));
|
||||||
items: photos.toList(),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
if (context.mounted) {
|
if (context.mounted) {
|
||||||
await context.refreshData();
|
await context.refreshData();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue