Files
umbrix/lib/core/localization/locale_preferences.dart
Umbrix Developer 76a374950f feat: mobile-like window size and always-visible stats
- Changed window size to mobile phone format (400x800)
- Removed width condition for ActiveProxyFooter - now always visible
- Added run-umbrix.sh launch script with icon copying
- Stats cards now display on all screen sizes
2026-01-17 13:09:20 +03:00

35 lines
1.1 KiB
Dart

import 'package:umbrix/core/preferences/preferences_provider.dart';
import 'package:umbrix/gen/translations.g.dart';
import 'package:umbrix/utils/custom_loggers.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'locale_preferences.g.dart';
@Riverpod(keepAlive: true)
class LocalePreferences extends _$LocalePreferences with AppLogger {
@override
AppLocale build() {
final persisted =
ref.watch(sharedPreferencesProvider).requireValue.getString("locale");
if (persisted == null) return AppLocaleUtils.findDeviceLocale();
// keep backward compatibility with chinese after changing zh to zh_CN
if (persisted == "zh") {
return AppLocale.zhCn;
}
try {
return AppLocale.values.byName(persisted);
} catch (e) {
loggy.error("error setting locale: [$persisted]", e);
return AppLocale.en;
}
}
Future<void> changeLocale(AppLocale value) async {
state = value;
await ref
.read(sharedPreferencesProvider)
.requireValue
.setString("locale", value.name);
}
}