Skip to content

Commit 8ecc0bd

Browse files
committed
Heic to jpg and renamed "api" folder to "network"
1 parent 1e8c003 commit 8ecc0bd

37 files changed

Lines changed: 329 additions & 217 deletions

android/app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
android:name="${applicationName}"
1616
android:usesCleartextTraffic="true"
1717
android:requestLegacyExternalStorage="true"
18+
android:largeHeap="true"
19+
android:hardwareAccelerated="false"
1820
android:icon="@mipmap/ic_launcher">
1921
<activity
2022
android:name=".MainActivity"

lib/components/app_image_display.dart

Lines changed: 48 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ import 'dart:io';
33

44
import 'package:cached_network_image/cached_network_image.dart';
55
import 'package:flutter/material.dart';
6-
import 'package:piwigo_ng/api/api_client.dart';
6+
import 'package:piwigo_ng/network/api_client.dart';
77
import 'package:piwigo_ng/services/preferences_service.dart';
8+
import 'package:piwigo_ng/utils/settings.dart';
89
import 'package:shared_preferences/shared_preferences.dart';
910

10-
class AppImageDisplay extends StatefulWidget {
11-
const AppImageDisplay({
11+
class ImageNetworkDisplay extends StatefulWidget {
12+
const ImageNetworkDisplay({
1213
Key? key,
1314
this.imageUrl,
1415
this.fit,
@@ -18,10 +19,10 @@ class AppImageDisplay extends StatefulWidget {
1819
final BoxFit? fit;
1920

2021
@override
21-
State<AppImageDisplay> createState() => _AppImageDisplayState();
22+
State<ImageNetworkDisplay> createState() => _ImageNetworkDisplayState();
2223
}
2324

24-
class _AppImageDisplayState extends State<AppImageDisplay> {
25+
class _ImageNetworkDisplayState extends State<ImageNetworkDisplay> {
2526
late final Future<Map<String, String>> _headers;
2627

2728
@override
@@ -57,32 +58,49 @@ class _AppImageDisplayState extends State<AppImageDisplay> {
5758
};
5859
}
5960

61+
void _checkMemory() {
62+
ImageCache imageCache = PaintingBinding.instance.imageCache;
63+
if (imageCache.liveImageCount >= Settings.maxCacheLiveImages) {
64+
imageCache.clear();
65+
imageCache.clearLiveImages();
66+
}
67+
}
68+
6069
@override
6170
Widget build(BuildContext context) {
6271
if (widget.imageUrl == null) {
6372
return _buildNoImageWidget(context);
6473
}
65-
74+
_checkMemory();
6675
return FutureBuilder<Map<String, String>>(
6776
future: _headers,
6877
builder: (context, snapshot) {
6978
if (snapshot.hasData) {
70-
return CachedNetworkImage(
71-
imageUrl: widget.imageUrl!,
72-
fadeInDuration: const Duration(milliseconds: 300),
73-
fit: widget.fit ?? BoxFit.cover,
74-
httpHeaders: snapshot.data!,
75-
imageBuilder: (context, provider) => Image(
76-
image: provider,
79+
return LayoutBuilder(builder: (context, constraints) {
80+
double? cacheWidth =
81+
constraints.maxWidth.isInfinite ? constraints.maxWidth : null;
82+
double? cacheHeight = constraints.maxHeight.isInfinite
83+
? constraints.maxHeight
84+
: null;
85+
return CachedNetworkImage(
86+
imageUrl: widget.imageUrl!,
87+
fadeInDuration: const Duration(milliseconds: 300),
7788
fit: widget.fit ?? BoxFit.cover,
78-
errorBuilder: (context, o, s) {
79-
debugPrint("$o\n$s");
80-
return _buildErrorWidget(context, widget.imageUrl, o);
81-
},
82-
),
83-
progressIndicatorBuilder: _buildProgressIndicator,
84-
errorWidget: _buildErrorWidget,
85-
);
89+
httpHeaders: snapshot.data!,
90+
memCacheWidth: cacheWidth?.floor(),
91+
memCacheHeight: cacheHeight?.floor(),
92+
imageBuilder: (context, provider) => Image(
93+
image: provider,
94+
fit: widget.fit ?? BoxFit.cover,
95+
errorBuilder: (context, o, s) {
96+
debugPrint("$o\n$s");
97+
return _buildErrorWidget(context, widget.imageUrl, o);
98+
},
99+
),
100+
progressIndicatorBuilder: _buildProgressIndicator,
101+
errorWidget: _buildErrorWidget,
102+
);
103+
});
86104
}
87105
if (snapshot.hasError) {
88106
return _buildErrorWidget(context);
@@ -94,7 +112,10 @@ class _AppImageDisplayState extends State<AppImageDisplay> {
94112
}
95113

96114
Widget _buildProgressIndicator(
97-
BuildContext context, String url, DownloadProgress download) {
115+
BuildContext context,
116+
String url,
117+
DownloadProgress download,
118+
) {
98119
if (download.downloaded >= (download.totalSize ?? 0)) {
99120
return const SizedBox();
100121
}
@@ -105,7 +126,11 @@ class _AppImageDisplayState extends State<AppImageDisplay> {
105126
);
106127
}
107128

108-
Widget _buildErrorWidget(BuildContext context, [String? url, dynamic error]) {
129+
Widget _buildErrorWidget(
130+
BuildContext context, [
131+
String? url,
132+
dynamic error,
133+
]) {
109134
debugPrint("[$url!] $error");
110135
return FittedBox(
111136
fit: BoxFit.cover,

lib/components/cards/album_card.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ class AlbumCardContent extends StatelessWidget {
187187
child: ClipRRect(
188188
borderRadius: BorderRadius.circular(10.0),
189189
child: Builder(builder: (context) {
190-
return AppImageDisplay(
190+
return ImageNetworkDisplay(
191191
imageUrl: album.urlRepresentative,
192192
);
193193
if (album.urlRepresentative == null) {

lib/components/cards/image_card.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ class ImageCard extends StatelessWidget {
103103
Widget _buildThumbnail(context) {
104104
final String? imageUrl =
105105
image.getDerivativeFromString(Preferences.getImageThumbnailSize)?.url;
106-
return AppImageDisplay(
106+
return ImageNetworkDisplay(
107107
imageUrl: imageUrl,
108108
);
109109
return CachedNetworkImage(

lib/components/cards/image_details_card.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class ImageDetailsCard extends StatelessWidget {
4949
final String? imageUrl = image
5050
.getDerivativeFromString(Preferences.getImageThumbnailSize)
5151
?.url;
52-
return AppImageDisplay(
52+
return ImageNetworkDisplay(
5353
imageUrl: imageUrl,
5454
);
5555
}),

lib/components/modals/add_tags_modal.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import 'package:flutter/material.dart';
22
import 'package:modal_bottom_sheet/modal_bottom_sheet.dart';
3-
import 'package:piwigo_ng/api/api_error.dart';
4-
import 'package:piwigo_ng/api/tags.dart';
53
import 'package:piwigo_ng/components/buttons/piwigo_button.dart';
64
import 'package:piwigo_ng/components/cards/tag_chip.dart';
75
import 'package:piwigo_ng/components/modals/create_tag_modal.dart';
86
import 'package:piwigo_ng/components/modals/piwigo_modal.dart';
97
import 'package:piwigo_ng/models/tag_model.dart';
8+
import 'package:piwigo_ng/network/api_error.dart';
9+
import 'package:piwigo_ng/network/tags.dart';
1010
import 'package:piwigo_ng/utils/localizations.dart';
1111

1212
class AddTagsModal extends StatefulWidget {

lib/components/modals/create_album_modal.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import 'package:flutter/material.dart';
2-
import 'package:piwigo_ng/api/albums.dart';
3-
import 'package:piwigo_ng/api/api_error.dart';
42
import 'package:piwigo_ng/components/buttons/animated_piwigo_button.dart';
53
import 'package:piwigo_ng/components/fields/app_field.dart';
64
import 'package:piwigo_ng/components/modals/piwigo_modal.dart';
75
import 'package:piwigo_ng/components/snackbars.dart';
6+
import 'package:piwigo_ng/network/albums.dart';
7+
import 'package:piwigo_ng/network/api_error.dart';
88
import 'package:piwigo_ng/utils/localizations.dart';
99
import 'package:rounded_loading_button/rounded_loading_button.dart';
1010

lib/components/modals/create_tag_modal.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import 'package:flutter/material.dart';
2-
import 'package:piwigo_ng/api/api_error.dart';
3-
import 'package:piwigo_ng/api/tags.dart';
42
import 'package:piwigo_ng/components/buttons/animated_piwigo_button.dart';
53
import 'package:piwigo_ng/components/fields/app_field.dart';
64
import 'package:piwigo_ng/components/modals/piwigo_modal.dart';
75
import 'package:piwigo_ng/components/snackbars.dart';
6+
import 'package:piwigo_ng/network/api_error.dart';
7+
import 'package:piwigo_ng/network/tags.dart';
88
import 'package:piwigo_ng/utils/localizations.dart';
99
import 'package:rounded_loading_button/rounded_loading_button.dart';
1010

lib/components/modals/delete_album_mode_modal.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:flutter/material.dart';
2-
import 'package:piwigo_ng/api/albums.dart';
32
import 'package:piwigo_ng/components/modals/piwigo_modal.dart';
43
import 'package:piwigo_ng/models/album_model.dart';
4+
import 'package:piwigo_ng/network/albums.dart';
55
import 'package:piwigo_ng/utils/localizations.dart';
66

77
class DeleteAlbumModeModal extends StatelessWidget {

lib/components/modals/delete_images_modal.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import 'package:flutter/material.dart';
2-
import 'package:piwigo_ng/api/albums.dart';
32
import 'package:piwigo_ng/components/modals/piwigo_modal.dart';
43
import 'package:piwigo_ng/models/album_model.dart';
54
import 'package:piwigo_ng/models/image_model.dart';
5+
import 'package:piwigo_ng/network/albums.dart';
66
import 'package:piwigo_ng/utils/localizations.dart';
77

88
class DeleteImagesModal extends StatelessWidget {

0 commit comments

Comments
 (0)