mirror of
https://github.com/venera-app/venera.git
synced 2025-09-27 15:57:25 +00:00
Reset state of photo view controllers on page change. Close #331
This commit is contained in:
@@ -143,7 +143,6 @@ class _GalleryModeState extends State<_GalleryMode>
|
|||||||
/// For current page, it will do nothing because it is already on the screen.
|
/// For current page, it will do nothing because it is already on the screen.
|
||||||
/// For other pages, it will do a pre-download cache.
|
/// For other pages, it will do a pre-download cache.
|
||||||
void cache(int startPage) {
|
void cache(int startPage) {
|
||||||
print("Cache page $startPage");
|
|
||||||
for (int i = startPage - 1; i <= startPage + preCacheCount; i++) {
|
for (int i = startPage - 1; i <= startPage + preCacheCount; i++) {
|
||||||
if (i == startPage || i <= 0 || i > totalPages) continue;
|
if (i == startPage || i <= 0 || i > totalPages) continue;
|
||||||
bool shouldPreCache = i == startPage + 1 || i == startPage - 1;
|
bool shouldPreCache = i == startPage + 1 || i == startPage - 1;
|
||||||
@@ -155,7 +154,6 @@ class _GalleryModeState extends State<_GalleryMode>
|
|||||||
int startIndex = (page - 1) * reader.imagesPerPage;
|
int startIndex = (page - 1) * reader.imagesPerPage;
|
||||||
int endIndex =
|
int endIndex =
|
||||||
math.min(startIndex + reader.imagesPerPage, reader.images!.length);
|
math.min(startIndex + reader.imagesPerPage, reader.images!.length);
|
||||||
print("Cache page $page: $startIndex-$endIndex");
|
|
||||||
for (int i = startIndex; i < endIndex; i++) {
|
for (int i = startIndex; i < endIndex; i++) {
|
||||||
if (shouldPreCache) {
|
if (shouldPreCache) {
|
||||||
_precacheImage(i+1, context);
|
_precacheImage(i+1, context);
|
||||||
@@ -264,6 +262,13 @@ class _GalleryModeState extends State<_GalleryMode>
|
|||||||
reader.setPage(i);
|
reader.setPage(i);
|
||||||
context.readerScaffold.update();
|
context.readerScaffold.update();
|
||||||
}
|
}
|
||||||
|
// Remove other pages' controllers to reset their state.
|
||||||
|
var keys = photoViewControllers.keys.toList();
|
||||||
|
for (var key in keys) {
|
||||||
|
if (key != i) {
|
||||||
|
photoViewControllers.remove(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@@ -1060,7 +1065,6 @@ void _precacheImage(int page, BuildContext context) {
|
|||||||
if (page <= 0 || page > context.reader.images!.length) {
|
if (page <= 0 || page > context.reader.images!.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
print("Precache image for page $page");
|
|
||||||
precacheImage(
|
precacheImage(
|
||||||
_createImageProvider(page, context),
|
_createImageProvider(page, context),
|
||||||
context,
|
context,
|
||||||
@@ -1073,7 +1077,6 @@ void _preDownloadImage(int page, BuildContext context) {
|
|||||||
if (page <= 0 || page > context.reader.images!.length) {
|
if (page <= 0 || page > context.reader.images!.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
print("Preload image for page $page");
|
|
||||||
var reader = context.reader;
|
var reader = context.reader;
|
||||||
var imageKey = reader.images![page - 1];
|
var imageKey = reader.images![page - 1];
|
||||||
var cid = reader.cid;
|
var cid = reader.cid;
|
||||||
|
Reference in New Issue
Block a user