Files
CloudHome-Ops/lib/providers/metrics_visibility_provider.dart

52 lines
1.6 KiB
Dart
Raw Normal View History

import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:shared_preferences/shared_preferences.dart';
/// 持久化键:是否显示设备详情页的运行指标(CPU / 内存 / 磁盘 / 网络)。
const String _kShowRuntimeMetrics = 'show_runtime_metrics';
/// 读取已保存的显示偏好;默认返回 false(即默认隐藏运行指标)。
Future<bool> loadSavedShowRuntimeMetrics() async {
try {
final prefs = await SharedPreferences.getInstance();
return prefs.getBool(_kShowRuntimeMetrics) ?? false;
} catch (_) {
return false;
}
}
/// 设备详情页运行指标显示偏好管理。
///
/// - 默认关闭,首次进入设备详情时不展示 CPU/内存/磁盘/网络卡片。
/// - 用户可在「我的 → 设置」中手动开启。
/// - 状态持久化到 [SharedPreferences],切换账号/重启 App 后仍保持。
class ShowRuntimeMetricsNotifier extends Notifier<bool> {
@override
bool build() {
_load();
return false;
}
Future<void> _load() async {
final saved = await loadSavedShowRuntimeMetrics();
if (saved != state) {
state = saved;
}
}
/// 切换显示状态并持久化。
Future<void> setValue(bool value) async {
state = value;
try {
final prefs = await SharedPreferences.getInstance();
await prefs.setBool(_kShowRuntimeMetrics, value);
} catch (_) {
// 忽略持久化失败,运行时状态仍生效。
}
}
}
/// 运行指标显示偏好提供者。
final showRuntimeMetricsProvider = NotifierProvider<ShowRuntimeMetricsNotifier, bool>(
ShowRuntimeMetricsNotifier.new,
);