mirror of
https://github.com/lifegpc/eh_downloader_flutter.git
synced 2026-07-08 01:30:28 +08:00
Fix displayAd not works in viewer
This commit is contained in:
@@ -32,7 +32,7 @@ class ThumbnailGridView extends StatelessWidget {
|
|||||||
key: key,
|
key: key,
|
||||||
fileId: fileId,
|
fileId: fileId,
|
||||||
gid: gid,
|
gid: gid,
|
||||||
index: index + 1,
|
index: page.index,
|
||||||
files: files,
|
files: files,
|
||||||
gdata: gdata));
|
gdata: gdata));
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -39,17 +39,30 @@ class _SinglePageViewer extends State<SinglePageViewer> with ThemeModeWidget {
|
|||||||
late PageController _pageController;
|
late PageController _pageController;
|
||||||
late int _index;
|
late int _index;
|
||||||
late GalleryData? _data;
|
late GalleryData? _data;
|
||||||
|
late List<ExtendedPMeta>? _pages;
|
||||||
late EhFiles? _files;
|
late EhFiles? _files;
|
||||||
late String _back;
|
late String _back;
|
||||||
CancelToken? _cancel;
|
CancelToken? _cancel;
|
||||||
bool _isLoading = false;
|
bool _isLoading = false;
|
||||||
bool _pageChanged = false;
|
bool _pageChanged = false;
|
||||||
Object? _error;
|
Object? _error;
|
||||||
|
bool inited = false;
|
||||||
|
void _updatePages() {
|
||||||
|
if (_data == null) return;
|
||||||
|
final displayAd = prefs.getBool("displayAd") ?? false;
|
||||||
|
_pages = displayAd ? _data!.pages : _data!.pages.where((e) => !e.isAd).toList();
|
||||||
|
_index = _pages!.indexWhere((e) => e.index == widget.index);
|
||||||
|
if (_index == -1) _index = 0;
|
||||||
|
if (!inited) {
|
||||||
|
_pageController = PageController(initialPage: _index);
|
||||||
|
inited = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
_index = widget.index - 1;
|
|
||||||
_pageController = PageController(initialPage: _index);
|
|
||||||
_data = widget.data;
|
_data = widget.data;
|
||||||
|
_updatePages();
|
||||||
_files = widget.files;
|
_files = widget.files;
|
||||||
_back = "/gallery/${widget.gid}";
|
_back = "/gallery/${widget.gid}";
|
||||||
super.initState();
|
super.initState();
|
||||||
@@ -75,15 +88,7 @@ class _SinglePageViewer extends State<SinglePageViewer> with ThemeModeWidget {
|
|||||||
cancel: _cancel))
|
cancel: _cancel))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
if (!_cancel!.isCancelled) {
|
if (!_cancel!.isCancelled) {
|
||||||
if (_index < 0) {
|
_updatePages();
|
||||||
_index = 0;
|
|
||||||
_pageController.jumpToPage(_index);
|
|
||||||
_pageChanged = true;
|
|
||||||
} else if (_index >= _data!.pages.length) {
|
|
||||||
_index = _data!.pages.length - 1;
|
|
||||||
_pageController.jumpToPage(_index);
|
|
||||||
_pageChanged = true;
|
|
||||||
}
|
|
||||||
setState(() {
|
setState(() {
|
||||||
_files = fileData;
|
_files = fileData;
|
||||||
_error = null;
|
_error = null;
|
||||||
@@ -102,7 +107,7 @@ class _SinglePageViewer extends State<SinglePageViewer> with ThemeModeWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _onPageChanged(BuildContext context) {
|
void _onPageChanged(BuildContext context) {
|
||||||
context.replace("/gallery/${widget.gid}/page/${_index + 1}",
|
context.replace("/gallery/${widget.gid}/page/${_pages![_index].index}",
|
||||||
extra: SinglePageViewerExtra(data: _data, files: _files));
|
extra: SinglePageViewerExtra(data: _data, files: _files));
|
||||||
_pageChanged = false;
|
_pageChanged = false;
|
||||||
}
|
}
|
||||||
@@ -162,7 +167,7 @@ class _SinglePageViewer extends State<SinglePageViewer> with ThemeModeWidget {
|
|||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
KeyAction(LogicalKeyboardKey.arrowRight, "next page", () {
|
KeyAction(LogicalKeyboardKey.arrowRight, "next page", () {
|
||||||
if (_index < _data!.pages.length - 1) {
|
if (_index < _pages!.length - 1) {
|
||||||
_pageController.nextPage(
|
_pageController.nextPage(
|
||||||
duration: const Duration(milliseconds: 200),
|
duration: const Duration(milliseconds: 200),
|
||||||
curve: Curves.easeInOut);
|
curve: Curves.easeInOut);
|
||||||
@@ -175,9 +180,9 @@ class _SinglePageViewer extends State<SinglePageViewer> with ThemeModeWidget {
|
|||||||
child: PhotoViewGallery.builder(
|
child: PhotoViewGallery.builder(
|
||||||
scrollPhysics: const BouncingScrollPhysics(),
|
scrollPhysics: const BouncingScrollPhysics(),
|
||||||
pageController: _pageController,
|
pageController: _pageController,
|
||||||
itemCount: _data!.pages.length,
|
itemCount: _pages!.length,
|
||||||
builder: (BuildContext context, int index) {
|
builder: (BuildContext context, int index) {
|
||||||
final data = _data!.pages[index];
|
final data = _pages![index];
|
||||||
final f = _files!.files[data.token]!.first;
|
final f = _files!.files[data.token]!.first;
|
||||||
return PhotoViewGalleryPageOptions(
|
return PhotoViewGalleryPageOptions(
|
||||||
imageProvider: DioImage.string(
|
imageProvider: DioImage.string(
|
||||||
|
|||||||
Reference in New Issue
Block a user