Skip to content

Commit

Permalink
"fix" manga slider
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrii Pyvovarov committed Sep 27, 2024
1 parent 7c664ff commit b3a1707
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 84 deletions.
149 changes: 69 additions & 80 deletions lib/content/manga/manga_reader_controls.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,18 @@ import 'package:cloud_hook/content/manga/widgets.dart';
import 'package:cloud_hook/content_suppliers/model.dart';
import 'package:cloud_hook/layouts/app_theme.dart';
import 'package:cloud_hook/utils/android_tv.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';

class MangaReaderControlsRoute<T> extends PopupRoute<T> {
final ContentDetails contentDetails;
final List<ContentMediaItem> mediaItems;
final ValueListenable<int> page;
final int pageNumbers;
final ValueChanged<int> onPageChanged;

MangaReaderControlsRoute({
required this.contentDetails,
required this.mediaItems,
required this.page,
required this.pageNumbers,
required this.onPageChanged,
});

Expand All @@ -46,8 +41,6 @@ class MangaReaderControlsRoute<T> extends PopupRoute<T> {
child: MangaReaderControls(
contentDetails: contentDetails,
mediaItems: mediaItems,
page: page,
pageNumbers: pageNumbers,
onPageChanged: onPageChanged,
),
),
Expand All @@ -59,16 +52,12 @@ class MangaReaderControlsRoute<T> extends PopupRoute<T> {
class MangaReaderControls extends StatelessWidget {
final ContentDetails contentDetails;
final List<ContentMediaItem> mediaItems;
final ValueListenable<int> page;
final int pageNumbers;
final ValueChanged<int> onPageChanged;

const MangaReaderControls({
super.key,
required this.contentDetails,
required this.mediaItems,
required this.page,
required this.pageNumbers,
required this.onPageChanged,
});

Expand All @@ -89,8 +78,6 @@ class MangaReaderControls extends StatelessWidget {
MangaReaderControlBottomBar(
contentDetails: contentDetails,
mediaItems: mediaItems,
page: page,
pageNumbers: pageNumbers,
onPageChanged: onPageChanged,
)
]),
Expand Down Expand Up @@ -174,91 +161,93 @@ class MangaReaderControlTopBar extends ConsumerWidget {
}
}

class MangaReaderControlBottomBar extends StatelessWidget {
class MangaReaderControlBottomBar extends ConsumerWidget {
final List<ContentMediaItem> mediaItems;
final ContentDetails contentDetails;
final ValueListenable<int> page;
final int pageNumbers;
final ValueChanged<int> onPageChanged;

const MangaReaderControlBottomBar({
super.key,
required this.contentDetails,
required this.mediaItems,
required this.page,
required this.pageNumbers,
required this.onPageChanged,
});

@override
Widget build(BuildContext context) {
Widget build(BuildContext context, WidgetRef ref) {
final theme = Theme.of(context);

return ValueListenableBuilder(
valueListenable: page,
builder: (context, pageIndex, child) {
final pageNumber = pageIndex + 1;
return Container(
decoration: const BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
stops: [
0.1,
1.0,
],
colors: [
Colors.transparent,
Colors.black54,
],
),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
final position = ref
.watch(collectionItemCurrentMediaItemPositionProvider(contentDetails))
.value;

if (position == null) {
return const SizedBox.shrink();
}

final pageNumbers = position.length;
final pageIndex = position.position;
final pageNumber = pageIndex + 1;

return Container(
decoration: const BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
stops: [
0.1,
1.0,
],
colors: [
Colors.transparent,
Colors.black54,
],
),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Slider(
allowedInteraction: SliderInteraction.slideOnly,
max: pageNumbers.toDouble() - 1,
value: pageIndex.toDouble(),
label: pageNumber.toString(),
divisions: pageNumbers - 1,
onChanged: (value) {
onPageChanged(value.round());
},
),
Padding(
padding: const EdgeInsets.only(bottom: 8.0, left: 16, right: 16),
child: Row(
mainAxisSize: MainAxisSize.max,
children: [
Slider(
allowedInteraction: SliderInteraction.slideOnly,
max: pageNumbers.toDouble() - 1,
value: pageIndex.toDouble(),
label: pageNumber.toString(),
divisions: pageNumbers - 1,
onChanged: (value) {
onPageChanged(value.round());
},
Text(
"$pageNumber / $pageNumbers",
style: theme.textTheme.bodyMedium!.copyWith(
color: Colors.white,
),
),
Padding(
padding:
const EdgeInsets.only(bottom: 8.0, left: 16, right: 16),
child: Row(
mainAxisSize: MainAxisSize.max,
children: [
Text(
"$pageNumber / $pageNumbers",
style: theme.textTheme.bodyMedium!.copyWith(
color: Colors.white,
),
const Spacer(),
IconButton(
onPressed: () {
showDialog(
context: context,
builder: (context) => MangaReaderSettingsDialog(
contentDetails: contentDetails,
mediaItems: mediaItems,
),
const Spacer(),
IconButton(
onPressed: () {
showDialog(
context: context,
builder: (context) => MangaReaderSettingsDialog(
contentDetails: contentDetails,
mediaItems: mediaItems,
),
);
},
icon: const Icon(Icons.settings),
color: Colors.white,
),
],
),
)
);
},
icon: const Icon(Icons.settings),
color: Colors.white,
),
],
),
);
});
)
],
),
);
}
}
3 changes: 0 additions & 3 deletions lib/content/manga/manga_reader_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,6 @@ class _MangaPagesReaderViewState extends ConsumerState<_MangaPagesReaderView> {
MangaReaderControlsRoute(
contentDetails: widget.contentDetails,
mediaItems: widget.mediaItems,
page: page,
pageNumbers: widget.pages.length,
onPageChanged: _jumpToPage,
),
),
Expand Down Expand Up @@ -181,7 +179,6 @@ class _MangaPagesReaderViewState extends ConsumerState<_MangaPagesReaderView> {
}

void _jumpToPage(int value) {
print(value);
ref.read(widget.collectionItemProvider.notifier).setCurrentPosition(value);
page.value = value;
}
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: cloud_hook
description: "Cloud Hooks"
publish_to: 'none'
version: 1.4.2
version: 1.4.3

isar_version: &isar_version 3.1.8
media_kit_version: &media_kit_version e41e50c
Expand Down

0 comments on commit b3a1707

Please sign in to comment.