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,
|
||
);
|