mirror of
https://github.com/gabehf/Fladder.git
synced 2026-03-09 07:28:14 -07:00
chore: Lots of bug fixes and navigation improvements
This commit is contained in:
parent
9bb5e81812
commit
92d5391b93
35 changed files with 513 additions and 455 deletions
|
|
@ -5,6 +5,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|||
|
||||
import 'package:fladder/models/settings/home_settings_model.dart';
|
||||
import 'package:fladder/providers/settings/home_settings_provider.dart';
|
||||
import 'package:fladder/screens/home_screen.dart';
|
||||
import 'package:fladder/util/adaptive_layout/adaptive_layout_model.dart';
|
||||
import 'package:fladder/util/debug_banner.dart';
|
||||
import 'package:fladder/util/localization_helper.dart';
|
||||
|
|
@ -81,9 +82,9 @@ class AdaptiveLayout extends InheritedWidget {
|
|||
return result!.data.posterDefaults;
|
||||
}
|
||||
|
||||
static ScrollController scrollOf(BuildContext context) {
|
||||
static ScrollController scrollOf(BuildContext context, HomeTabs tab) {
|
||||
final AdaptiveLayout? result = maybeOf(context);
|
||||
return result!.data.controller;
|
||||
return result?.data.controller[tab] ?? ScrollController();
|
||||
}
|
||||
|
||||
static EdgeInsets adaptivePadding(BuildContext context, {double horizontalPadding = 16}) {
|
||||
|
|
@ -130,7 +131,10 @@ class _AdaptiveLayoutBuilderState extends ConsumerState<AdaptiveLayoutBuilder> {
|
|||
late ViewSize viewSize = ViewSize.tablet;
|
||||
late LayoutMode layoutMode = LayoutMode.single;
|
||||
late TargetPlatform currentPlatform = defaultTargetPlatform;
|
||||
late ScrollController controller = ScrollController();
|
||||
|
||||
final Map<HomeTabs, ScrollController> scrollControllers = {
|
||||
for (var item in HomeTabs.values) item: ScrollController(),
|
||||
};
|
||||
|
||||
@override
|
||||
void didChangeDependencies() {
|
||||
|
|
@ -177,11 +181,7 @@ class _AdaptiveLayoutBuilderState extends ConsumerState<AdaptiveLayoutBuilder> {
|
|||
final selectedLayoutMode = selectAvailableOrSmaller<LayoutMode>(layoutMode, acceptedLayouts, LayoutMode.values);
|
||||
final input = (isDesktop || kIsWeb) ? InputDevice.pointer : InputDevice.touch;
|
||||
|
||||
final posterDefaults = switch (selectedViewSize) {
|
||||
ViewSize.phone => const PosterDefaults(size: 300, ratio: 0.55),
|
||||
ViewSize.tablet => const PosterDefaults(size: 350, ratio: 0.55),
|
||||
ViewSize.desktop => const PosterDefaults(size: 400, ratio: 0.55),
|
||||
};
|
||||
final posterDefaults = const PosterDefaults(size: 350, ratio: 0.55);
|
||||
|
||||
final currentLayout = widget.adaptiveLayout ??
|
||||
AdaptiveLayoutModel(
|
||||
|
|
@ -191,7 +191,7 @@ class _AdaptiveLayoutBuilderState extends ConsumerState<AdaptiveLayoutBuilder> {
|
|||
platform: currentPlatform,
|
||||
isDesktop: isDesktop,
|
||||
sideBarWidth: 0,
|
||||
controller: controller,
|
||||
controller: scrollControllers,
|
||||
posterDefaults: posterDefaults,
|
||||
);
|
||||
|
||||
|
|
@ -207,7 +207,7 @@ class _AdaptiveLayoutBuilderState extends ConsumerState<AdaptiveLayoutBuilder> {
|
|||
inputDevice: input,
|
||||
platform: currentPlatform,
|
||||
isDesktop: isDesktop,
|
||||
controller: controller,
|
||||
controller: scrollControllers,
|
||||
posterDefaults: posterDefaults,
|
||||
),
|
||||
child: Builder(
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:fladder/screens/home_screen.dart';
|
||||
import 'package:fladder/util/adaptive_layout/adaptive_layout.dart';
|
||||
import 'package:fladder/util/poster_defaults.dart';
|
||||
|
||||
|
|
@ -46,7 +47,7 @@ class AdaptiveLayoutModel {
|
|||
final TargetPlatform platform;
|
||||
final bool isDesktop;
|
||||
final PosterDefaults posterDefaults;
|
||||
final ScrollController controller;
|
||||
final Map<HomeTabs, ScrollController> controller;
|
||||
final double sideBarWidth;
|
||||
|
||||
const AdaptiveLayoutModel({
|
||||
|
|
@ -67,7 +68,7 @@ class AdaptiveLayoutModel {
|
|||
TargetPlatform? platform,
|
||||
bool? isDesktop,
|
||||
PosterDefaults? posterDefaults,
|
||||
ScrollController? controller,
|
||||
Map<HomeTabs, ScrollController>? controller,
|
||||
double? sideBarWidth,
|
||||
}) {
|
||||
return AdaptiveLayoutModel(
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ class FladderImage extends ConsumerWidget {
|
|||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final useBluredPlaceHolder = ref.watch(clientSettingsProvider.select((value) => value.blurPlaceHolders));
|
||||
final newImage = image;
|
||||
final imageProvider = image?.imageProvider;
|
||||
if (newImage == null) {
|
||||
return placeHolder ?? Container();
|
||||
} else {
|
||||
|
|
@ -44,13 +45,15 @@ class FladderImage extends ConsumerWidget {
|
|||
fit: stackFit,
|
||||
children: [
|
||||
if (!disableBlur && useBluredPlaceHolder && newImage.hash.isNotEmpty || blurOnly)
|
||||
BlurHash(
|
||||
hash: newImage.hash,
|
||||
optimizationMode: BlurHashOptimizationMode.approximation,
|
||||
color: Colors.transparent,
|
||||
imageFit: blurFit ?? fit,
|
||||
Image(
|
||||
image: BlurHashImage(
|
||||
newImage.hash,
|
||||
decodingHeight: 24,
|
||||
decodingWidth: 24,
|
||||
),
|
||||
fit: blurFit ?? fit,
|
||||
),
|
||||
if (!blurOnly)
|
||||
if (!blurOnly && imageProvider != null)
|
||||
FadeInImage(
|
||||
placeholder: MemoryImage(kTransparentImage),
|
||||
fit: fit,
|
||||
|
|
@ -58,7 +61,7 @@ class FladderImage extends ConsumerWidget {
|
|||
excludeFromSemantics: true,
|
||||
alignment: alignment ?? Alignment.center,
|
||||
imageErrorBuilder: imageErrorBuilder,
|
||||
image: newImage.imageProvider,
|
||||
image: imageProvider,
|
||||
)
|
||||
],
|
||||
);
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import 'package:fladder/models/book_model.dart';
|
|||
import 'package:fladder/models/item_base_model.dart';
|
||||
import 'package:fladder/models/items/episode_model.dart';
|
||||
import 'package:fladder/models/items/item_shared_models.dart';
|
||||
import 'package:fladder/models/items/photos_model.dart';
|
||||
import 'package:fladder/providers/sync_provider.dart';
|
||||
import 'package:fladder/providers/user_provider.dart';
|
||||
import 'package:fladder/screens/collections/add_to_collection.dart';
|
||||
|
|
@ -142,7 +141,7 @@ extension ItemBaseModelExtensions on ItemBaseModel {
|
|||
else if (!exclude.contains(ItemActions.showAlbum) && galleryItem)
|
||||
ItemActionButton(
|
||||
icon: Icon(FladderItemType.photoAlbum.icon),
|
||||
action: () => (this as PhotoModel).navigateToAlbum(context),
|
||||
action: () => parentBaseModel.navigateTo(context),
|
||||
label: Text(context.localized.showAlbum),
|
||||
),
|
||||
if (!exclude.contains(ItemActions.playFromStart))
|
||||
|
|
|
|||
|
|
@ -171,7 +171,7 @@ extension PhotoAlbumExtension on PhotoAlbumModel? {
|
|||
return;
|
||||
}
|
||||
|
||||
await context.navigateTo(PhotoViewerRoute(
|
||||
await context.pushRoute(PhotoViewerRoute(
|
||||
items: photos.toList(),
|
||||
));
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue