Skip to content

Commit 5cd4b18

Browse files
committed
feat: different cache manager for images
1 parent a640f33 commit 5cd4b18

File tree

4 files changed

+112
-13
lines changed

4 files changed

+112
-13
lines changed

lib/Screens/Settings/SettingsCommonScreen.dart

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,19 +44,29 @@ class SettingsCommonScreenState extends BaseSettingsScreen {
4444
description: getString.customPathDescription,
4545
icon: Icons.folder,
4646
isVisible: !(Platform.isIOS || Platform.isMacOS),
47-
onLongClick: () => PrefManager.removeVal(PrefName.customPath),
47+
onLongClick: () => removeData(PrefName.customPath),
4848
onClick: () async {
49-
var path = PrefManager.getVal(PrefName.customPath);
49+
var path = loadData(PrefName.customPath);
5050
final result = await FilePicker.platform.getDirectoryPath(
5151
dialogTitle: getString.selectDirectory,
5252
lockParentWindow: true,
5353
initialDirectory: path,
5454
);
5555
if (result != null) {
56-
PrefManager.setVal(PrefName.customPath, result);
56+
saveData(PrefName.customPath, result);
5757
}
5858
},
5959
),
60+
Setting(
61+
type: SettingType.switchType,
62+
name: 'Use different Image cache manager',
63+
description: 'Just because',
64+
icon: Icons.image,
65+
isChecked: loadCustomData('useDifferentCacheManager') ?? false,
66+
onSwitchChange: (value) {
67+
saveCustomData('useDifferentCacheManager', value);
68+
},
69+
),
6070
],
6171
),
6272
Text(
@@ -74,9 +84,9 @@ class SettingsCommonScreenState extends BaseSettingsScreen {
7484
name: getString.hidePrivate,
7585
description: getString.hidePrivateDescription,
7686
icon: Icons.visibility_off,
77-
isChecked: PrefManager.getVal(PrefName.anilistHidePrivate),
87+
isChecked: loadData(PrefName.anilistHidePrivate),
7888
onSwitchChange: (value) {
79-
PrefManager.setVal(PrefName.anilistHidePrivate, value);
89+
saveData(PrefName.anilistHidePrivate, value);
8090
Refresh.activity[RefreshId.Anilist.homePage]?.value = true;
8191
},
8292
),
@@ -87,7 +97,7 @@ class SettingsCommonScreenState extends BaseSettingsScreen {
8797
icon: Icons.tune,
8898
onClick: () async {
8999
final homeLayoutMap =
90-
PrefManager.getVal(PrefName.anilistHomeLayout);
100+
loadData(PrefName.anilistHomeLayout);
91101
List<String> titles =
92102
List<String>.from(homeLayoutMap.keys.toList());
93103
List<bool> checkedStates =
@@ -103,7 +113,7 @@ class SettingsCommonScreenState extends BaseSettingsScreen {
103113
(newCheckedStates) => checkedStates = newCheckedStates,
104114
)
105115
..setPositiveButton(getString.ok, () {
106-
PrefManager.setVal(PrefName.anilistHomeLayout,
116+
saveData(PrefName.anilistHomeLayout,
107117
Map.fromIterables(titles, checkedStates));
108118
Refresh.activity[RefreshId.Anilist.homePage]?.value = true;
109119
})
@@ -129,7 +139,7 @@ class SettingsCommonScreenState extends BaseSettingsScreen {
129139
description: getString.manageLayoutDescription(getString.home),
130140
icon: Icons.tune,
131141
onClick: () async {
132-
final homeLayoutMap = PrefManager.getVal(PrefName.malHomeLayout);
142+
final homeLayoutMap = loadData(PrefName.malHomeLayout);
133143
List<String> titles =
134144
List<String>.from(homeLayoutMap.keys.toList());
135145
List<bool> checkedStates =
@@ -147,7 +157,7 @@ class SettingsCommonScreenState extends BaseSettingsScreen {
147157
..setPositiveButton(
148158
getString.ok,
149159
() {
150-
PrefManager.setVal(
160+
saveData(
151161
PrefName.malHomeLayout,
152162
Map.fromIterables(titles, checkedStates),
153163
);
@@ -177,7 +187,7 @@ class SettingsCommonScreenState extends BaseSettingsScreen {
177187
icon: Icons.tune,
178188
onClick: () async {
179189
final homeLayoutMap =
180-
PrefManager.getVal(PrefName.simklHomeLayout);
190+
loadData(PrefName.simklHomeLayout);
181191
List<String> titles =
182192
List<String>.from(homeLayoutMap.keys.toList());
183193
List<bool> checkedStates =
@@ -195,7 +205,7 @@ class SettingsCommonScreenState extends BaseSettingsScreen {
195205
..setPositiveButton(
196206
getString.ok,
197207
() {
198-
PrefManager.setVal(
208+
saveData(
199209
PrefName.simklHomeLayout,
200210
Map.fromIterables(titles, checkedStates),
201211
);

lib/Widgets/CachedNetworkImage.dart

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
import 'package:cached_network_image/cached_network_image.dart';
2+
import 'package:dantotsu/Preferences/PrefManager.dart';
23
import 'package:flutter/material.dart';
34
import 'package:get/get.dart';
5+
import 'package:precached_network_image/precached_network_image.dart';
46

57
Widget cachedNetworkImage({
68
required String? imageUrl,
79
BoxFit? fit,
810
double? width,
911
double? height,
1012
Widget Function(BuildContext, String)? placeholder,
11-
Widget Function(BuildContext, String, Object)? errorWidget,
13+
Widget Function(BuildContext, String, dynamic)? errorWidget,
1214
}) {
1315
if ((imageUrl == null || imageUrl.isEmpty)) {
1416
if (placeholder != null) {
@@ -23,7 +25,20 @@ Widget cachedNetworkImage({
2325
height: height,
2426
);
2527
}
26-
28+
var useDifferentCacheManager =
29+
loadCustomData<bool>('useDifferentCacheManager') ?? false;
30+
if (useDifferentCacheManager) {
31+
return PrecachedNetworkImage(
32+
url: imageUrl,
33+
width: width ?? 100,
34+
height: height ?? 100,
35+
precache: true,
36+
fit: fit ?? BoxFit.cover,
37+
placeholder: placeholder ?? (context, url) => const SizedBox.shrink(),
38+
errorWidget:
39+
errorWidget ?? (context, url, error) => const SizedBox.shrink(),
40+
);
41+
}
2742
return CachedNetworkImage(
2843
filterQuality: FilterQuality.high,
2944
imageUrl: imageUrl,

pubspec.lock

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,14 @@ packages:
302302
url: "https://pub.dev"
303303
source: hosted
304304
version: "0.2.3"
305+
dev_colorized_log:
306+
dependency: transitive
307+
description:
308+
name: dev_colorized_log
309+
sha256: fbd5fe7f890177f5e5b3c8b9cbc64db75849b4b785131a0579a8e2cb03f3316b
310+
url: "https://pub.dev"
311+
source: hosted
312+
version: "1.2.4"
305313
device_info_plus:
306314
dependency: "direct main"
307315
description:
@@ -1198,6 +1206,14 @@ packages:
11981206
url: "https://pub.dev"
11991207
source: hosted
12001208
version: "6.0.1"
1209+
precached_network_image:
1210+
dependency: "direct main"
1211+
description:
1212+
name: precached_network_image
1213+
sha256: d94960313a44aa49b31c61c1258397de3f9c971d67c7843e300d5eb66abac5be
1214+
url: "https://pub.dev"
1215+
source: hosted
1216+
version: "1.2.4"
12011217
provider:
12021218
dependency: "direct main"
12031219
description:
@@ -1390,6 +1406,62 @@ packages:
13901406
url: "https://pub.dev"
13911407
source: hosted
13921408
version: "5.0.2"
1409+
shared_preferences:
1410+
dependency: transitive
1411+
description:
1412+
name: shared_preferences
1413+
sha256: "846849e3e9b68f3ef4b60c60cf4b3e02e9321bc7f4d8c4692cf87ffa82fc8a3a"
1414+
url: "https://pub.dev"
1415+
source: hosted
1416+
version: "2.5.2"
1417+
shared_preferences_android:
1418+
dependency: transitive
1419+
description:
1420+
name: shared_preferences_android
1421+
sha256: a768fc8ede5f0c8e6150476e14f38e2417c0864ca36bb4582be8e21925a03c22
1422+
url: "https://pub.dev"
1423+
source: hosted
1424+
version: "2.4.6"
1425+
shared_preferences_foundation:
1426+
dependency: transitive
1427+
description:
1428+
name: shared_preferences_foundation
1429+
sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03"
1430+
url: "https://pub.dev"
1431+
source: hosted
1432+
version: "2.5.4"
1433+
shared_preferences_linux:
1434+
dependency: transitive
1435+
description:
1436+
name: shared_preferences_linux
1437+
sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f"
1438+
url: "https://pub.dev"
1439+
source: hosted
1440+
version: "2.4.1"
1441+
shared_preferences_platform_interface:
1442+
dependency: transitive
1443+
description:
1444+
name: shared_preferences_platform_interface
1445+
sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80"
1446+
url: "https://pub.dev"
1447+
source: hosted
1448+
version: "2.4.1"
1449+
shared_preferences_web:
1450+
dependency: transitive
1451+
description:
1452+
name: shared_preferences_web
1453+
sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019
1454+
url: "https://pub.dev"
1455+
source: hosted
1456+
version: "2.4.3"
1457+
shared_preferences_windows:
1458+
dependency: transitive
1459+
description:
1460+
name: shared_preferences_windows
1461+
sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1"
1462+
url: "https://pub.dev"
1463+
source: hosted
1464+
version: "2.4.1"
13931465
shelf:
13941466
dependency: transitive
13951467
description:

pubspec.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ dependencies:
4545
# UI Components
4646
expandable_text: 2.3.0
4747
cached_network_image: ^3.4.1
48+
precached_network_image: ^1.2.4
4849
flutter_svg: ^2.0.17
4950
flex_color_scheme: ^8.1.0
5051
flex_color_picker: ^3.7.0
@@ -98,6 +99,7 @@ dependencies:
9899
flutter_web_auth_2: ^4.1.0
99100
flutter_dotenv: ^5.2.1
100101
intl: ^0.19.0
102+
101103
# Development dependencies
102104
dev_dependencies:
103105
flutter_test:

0 commit comments

Comments
 (0)