import 'dart:convert'; import 'package:flutter/foundation.dart'; import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; import 'package:json_annotation/json_annotation.dart'; import '../global.dart'; part 'settings.g.dart'; @JsonSerializable() class AppSettings { bool? betaPageRender; AppSettings({this.betaPageRender}); factory AppSettings.fromJson(Map json) => _$AppSettingsFromJson(json); Map toJson() => _$AppSettingsToJson(this); } class AppSettingsController extends GetxController { bool _ignoreSave = false; var betaPageRender = false.obs; @override void onInit() { super.onInit(); loadFromStorage(); everAll([betaPageRender], (_) { saveToStorage(); }); } /// 从本地存储读取 void loadFromStorage() { try { final storage = GetStorage(); var settingsJson = storage.read("settings"); if (settingsJson == null) return; var settingsObject = jsonDecode(settingsJson); if (settingsObject == null) return; var settingsData = AppSettings.fromJson(settingsObject); _ignoreSave = true; betaPageRender.value = settingsData.betaPageRender ?? betaPageRender.value; _ignoreSave = false; } catch (ex) { if (kDebugMode) { print(ex); } } finally { _ignoreSave = false; } } /// 保存到本地存储 void saveToStorage() { if (_ignoreSave) return; final storage = GetStorage(); var settingsData = AppSettings(betaPageRender: betaPageRender.value); var settingsJson = jsonEncode(settingsData.toJson()); storage.write("settings", settingsJson); } }