news_getx/lib/data/services/config.dart

63 lines
1.6 KiB
Dart

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:news_getx/config/storage.dart';
import 'package:news_getx/data/services/storage.dart';
import 'package:package_info_plus/package_info_plus.dart';
class ConfigService extends GetxService {
static ConfigService get to => Get.find();
bool isFirstOpen = false;
RxBool isGrayFilter = false.obs;
PackageInfo? _platform;
String get version => _platform?.version ?? "-";
bool get isRelease => bool.fromEnvironment("dart.vm.product");
// Locale locale = Locale("en", "US");
Locale locale = Locale("zh", "CN");
List<Locale> languages = [
Locale('en', 'US'),
Locale('zh', 'CN'),
];
@override
void onInit() {
super.onInit();
isFirstOpen = StorageService.to.getBool(StorageDeviceFirstOpenKey);
}
void changeGrayTheme() {
isGrayFilter.value = !isGrayFilter.value;
}
Future<void> getPlatform() async {
_platform = await PackageInfo.fromPlatform();
}
// 标记用户已打开APP
Future<bool> saveAlreadyOpen() {
return StorageService.to.setBool(StorageDeviceFirstOpenKey, false);
}
void onInitLocale() {
String langCode = StorageService.to.getString(StorageLanguageCode);
if (langCode.isEmpty) return;
int index = languages.indexWhere((element) {
return element.languageCode == langCode;
});
if (index < 0) return;
locale = languages[index];
}
void onLocaleUpdate(Locale value) {
locale = value;
// 更新app的语言
Get.updateLocale(value);
StorageService.to.setString(StorageLanguageCode, value.languageCode);
}
}