52 lines
1.6 KiB
Dart
52 lines
1.6 KiB
Dart
|
|
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,
|
|||
|
|
);
|