Skip to content

Commit 370ba3a

Browse files
committed
Remember image list pagination on back
1 parent 92896c0 commit 370ba3a

5 files changed

Lines changed: 42 additions & 8 deletions

File tree

lib/app.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ import 'package:piwigo_ng/views/unknown_route_page.dart';
2323
import 'package:piwigo_ng/views/upload/upload_status_page.dart';
2424
import 'package:piwigo_ng/views/upload/upload_view_page.dart';
2525

26+
import 'models/image_model.dart';
27+
2628
class App extends StatelessWidget {
2729
const App({Key? key}) : super(key: key);
2830

@@ -157,7 +159,7 @@ Route<dynamic> generateRoute(RouteSettings settings) {
157159
settings: settings,
158160
);
159161
case ImageViewPage.routeName:
160-
return MaterialPageRoute(
162+
return MaterialPageRoute<List<ImageModel>?>(
161163
builder: (_) => ImageViewPage(
162164
images: arguments['images'] ?? [],
163165
startId: arguments['startId'],

lib/views/album/album_view_page.dart

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import 'package:piwigo_ng/services/upload_notifier.dart';
1616
import 'package:piwigo_ng/utils/album_actions.dart';
1717
import 'package:piwigo_ng/utils/image_actions.dart';
1818
import 'package:piwigo_ng/utils/localizations.dart';
19+
import 'package:piwigo_ng/utils/settings.dart';
1920
import 'package:piwigo_ng/views/image/image_view_page.dart';
2021
import 'package:piwigo_ng/views/upload/upload_status_page.dart';
2122
import 'package:piwigo_ng/views/upload/upload_view_page.dart';
@@ -142,7 +143,14 @@ class _AlbumViewPageState extends State<AlbumViewPage>
142143
'startId': image.id,
143144
'album': _currentAlbum,
144145
},
145-
).whenComplete(() => _onRefresh());
146+
).then((images) {
147+
if (images == null || images is! List<ImageModel>) return;
148+
setState(() {
149+
_imageList = images;
150+
_page =
151+
((images.length - 1) / Settings.defaultElementPerPage).floor();
152+
});
153+
});
146154
void _onEditPhotos() => onEditPhotos(context, _selectedList).then((success) {
147155
if (success == true) {
148156
_selectedList.clear();

lib/views/image/image_favorites_page.dart

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:piwigo_ng/models/image_model.dart';
88
import 'package:piwigo_ng/services/preferences_service.dart';
99
import 'package:piwigo_ng/utils/image_actions.dart';
1010
import 'package:piwigo_ng/utils/localizations.dart';
11+
import 'package:piwigo_ng/utils/settings.dart';
1112
import 'package:piwigo_ng/views/image/image_view_page.dart';
1213
import 'package:pull_to_refresh/pull_to_refresh.dart';
1314

@@ -109,7 +110,14 @@ class _ImageFavoritesPageState extends State<ImageFavoritesPage> {
109110
nbTotalImages: _nbImages,
110111
),
111112
},
112-
).whenComplete(() => _onRefresh());
113+
).then((images) {
114+
if (images == null || images is! List<ImageModel>) return;
115+
setState(() {
116+
_imageList = images;
117+
_page =
118+
((images.length - 1) / Settings.defaultElementPerPage).floor();
119+
});
120+
});
113121
void _onEditPhotos() => onEditPhotos(context, _selectedList).then((success) {
114122
if (success == true) {
115123
_selectedList.clear();

lib/views/image/image_search_view_page.dart

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import 'package:piwigo_ng/services/preferences_service.dart';
1010
import 'package:piwigo_ng/utils/image_actions.dart';
1111
import 'package:piwigo_ng/utils/localizations.dart';
1212
import 'package:piwigo_ng/utils/page_routes.dart';
13+
import 'package:piwigo_ng/utils/settings.dart';
1314
import 'package:piwigo_ng/views/image/image_view_page.dart';
1415
import 'package:pull_to_refresh/pull_to_refresh.dart';
1516

@@ -127,7 +128,14 @@ class _ImageSearchViewPageState extends State<ImageSearchViewPage> {
127128
nbTotalImages: _nbImages,
128129
),
129130
},
130-
).whenComplete(() => _onRefresh());
131+
).then((images) {
132+
if (images == null || images is! List<ImageModel>) return;
133+
setState(() {
134+
_searchList = images;
135+
_page =
136+
((images.length - 1) / Settings.defaultElementPerPage).floor();
137+
});
138+
});
131139

132140
void _onEditPhotos() => onEditPhotos(context, _selectedList).then((success) {
133141
if (success == true) {

lib/views/image/image_view_page.dart

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import 'package:piwigo_ng/services/theme_provider.dart';
2020
import 'package:piwigo_ng/utils/image_actions.dart';
2121
import 'package:piwigo_ng/utils/localizations.dart';
2222
import 'package:piwigo_ng/utils/resources.dart';
23+
import 'package:piwigo_ng/utils/settings.dart';
2324
import 'package:piwigo_ng/views/image/video_player_page.dart';
2425
import 'package:provider/provider.dart';
2526

@@ -79,6 +80,9 @@ class _ImageViewPageState extends State<ImageViewPage> {
7980
void initState() {
8081
_imageList = widget.images.sublist(0);
8182
_album = widget.album;
83+
_imagePage =
84+
((_imageList.length - 1) / Settings.defaultElementPerPage).floor();
85+
8286
final ImageModel? startImage =
8387
_imageList.firstWhere((image) => image.id == widget.startId);
8488
if (startImage != null) {
@@ -87,12 +91,15 @@ class _ImageViewPageState extends State<ImageViewPage> {
8791
_loadMoreImages();
8892
}
8993
}
94+
9095
_pageController = PageController(initialPage: _page);
96+
97+
_loadCookies();
98+
9199
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light.copyWith(
92100
systemNavigationBarColor: Colors.black.withOpacity(0.1),
93101
statusBarColor: Colors.black.withOpacity(0.1),
94102
));
95-
_loadCookies();
96103
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
97104
_getImagesInfo(_imageList);
98105
});
@@ -166,7 +173,8 @@ class _ImageViewPageState extends State<ImageViewPage> {
166173
});
167174
return false;
168175
}
169-
return true;
176+
Navigator.of(context).pop(_imageList);
177+
return false;
170178
}
171179

172180
/// Toggle overlay action (orientation was necessary, *see comments*).
@@ -190,7 +198,7 @@ class _ImageViewPageState extends State<ImageViewPage> {
190198
/// Handle when
191199
Future<void> _onRemoveImage(ImageModel image) async {
192200
if (_imageList.length == 1) {
193-
Navigator.of(context).pop();
201+
Navigator.of(context).pop([]);
194202
}
195203
if (_imageList.length - 1 == _page) {
196204
await _pageController.previousPage(
@@ -291,7 +299,7 @@ class _ImageViewPageState extends State<ImageViewPage> {
291299
child: Row(
292300
children: [
293301
IconButton(
294-
onPressed: () => Navigator.of(context).pop(),
302+
onPressed: () => Navigator.of(context).pop(_imageList),
295303
icon: Icon(Icons.arrow_back),
296304
),
297305
Expanded(

0 commit comments

Comments
 (0)