Files
DMZJ_F/lib/modules/user/settings/settings_controller.dart
2026-03-07 17:24:59 +08:00

98 lines
2.8 KiB
Dart

import 'package:extended_image/extended_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter_dmzj/services/app_settings_service.dart';
import 'package:flutter_dmzj/services/local_storage_service.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
class SettingsController extends GetxController {
final settings = AppSettingsService.instance;
var imageCacheSize = "正在计算缓存...".obs;
var novelCacheSize = "正在计算缓存...".obs;
@override
void onInit() {
super.onInit();
getImageCachedSize();
getNovelCachedSize();
}
void getImageCachedSize() async {
try {
imageCacheSize.value = "正在计算缓存...";
var bytes = await getCachedSizeBytes();
imageCacheSize.value = "${(bytes / 1024 / 1024).toStringAsFixed(1)}MB";
} catch (e) {
imageCacheSize.value = "缓存计算失败";
}
}
void getNovelCachedSize() async {
try {
novelCacheSize.value = "正在计算缓存...";
var bytes = await LocalStorageService.instance.getNovelCacheSize();
novelCacheSize.value = "${(bytes / 1024 / 1024).toStringAsFixed(1)}MB";
} catch (e) {
novelCacheSize.value = "缓存计算失败";
}
}
void cleanImageCache() async {
var result = await clearDiskCachedImages();
if (!result) {
SmartDialog.showToast("清除失败");
}
getImageCachedSize();
}
void cleanNovelCache() async {
var result = await LocalStorageService.instance.cleanNovelCacheSize();
if (!result) {
SmartDialog.showToast("清除失败");
}
getNovelCachedSize();
}
void setDownloadComicTask() {
Get.dialog(
SimpleDialog(
title: const Text("漫画最大任务数"),
children: [0, 1, 2, 3, 4, 5]
.map(
(e) => RadioListTile<int>(
title: Text(e == 0 ? "无限制" : "$e个"),
value: e,
groupValue: settings.downloadComicTaskCount.value,
onChanged: (e) {
Get.back();
settings.setDownloadComicTaskCount(e ?? 0);
},
),
)
.toList(),
),
);
}
void setDownloadNovelTask() {
Get.dialog(
SimpleDialog(
title: const Text("小说最大任务数"),
children: [0, 1, 2, 3, 4, 5]
.map(
(e) => RadioListTile<int>(
title: Text(e == 0 ? "无限制" : "$e个"),
value: e,
groupValue: settings.downloadNovelTaskCount.value,
onChanged: (e) {
Get.back();
settings.setDownloadNovelTaskCount(e ?? 0);
},
),
)
.toList(),
),
);
}
}