locale_controller.dart 759 B

1234567891011121314151617181920212223
  1. import 'package:flutter/material.dart';
  2. import 'package:shared_preferences/shared_preferences.dart';
  3. /// App-wide language, persisted across launches. Defaults to English
  4. /// until a user preference is loaded/set — no device-locale auto-detect.
  5. class LocaleController {
  6. LocaleController._();
  7. static const _prefsKey = 'app_locale';
  8. static final ValueNotifier<String> localeCode = ValueNotifier('en');
  9. static Future<void> load() async {
  10. final prefs = await SharedPreferences.getInstance();
  11. localeCode.value = prefs.getString(_prefsKey) ?? 'en';
  12. }
  13. static Future<void> setLocale(String code) async {
  14. localeCode.value = code;
  15. final prefs = await SharedPreferences.getInstance();
  16. await prefs.setString(_prefsKey, code);
  17. }
  18. }