From 76db2f825494781ec2e4adf5a3d6203f83c50fc7 Mon Sep 17 00:00:00 2001 From: Valentin CZERYBA Date: Wed, 6 Aug 2025 22:34:01 +0200 Subject: [PATCH] add cache for language --- covas_mobile/lib/locale_provider.dart | 21 ++++++++++++++++++++- covas_mobile/lib/main.dart | 2 +- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/covas_mobile/lib/locale_provider.dart b/covas_mobile/lib/locale_provider.dart index 4f5ac79..0d90807 100644 --- a/covas_mobile/lib/locale_provider.dart +++ b/covas_mobile/lib/locale_provider.dart @@ -1,15 +1,34 @@ import 'package:flutter/material.dart'; +import 'package:shared_preferences/shared_preferences.dart'; class LocaleProvider with ChangeNotifier { + static const _localeKey = 'locale_code'; + Locale _locale = const Locale('en'); Locale get locale => _locale; - void setLocale(Locale locale) { + LocaleProvider() { + _loadLocale(); + } + + Future _loadLocale() async { + final prefs = await SharedPreferences.getInstance(); + final code = prefs.getString(_localeKey); + if (code != null && L10n.all.contains(Locale(code))) { + _locale = Locale(code); + notifyListeners(); + } + } + + void setLocale(Locale locale) async { if (!L10n.all.contains(locale)) return; _locale = locale; notifyListeners(); + + final prefs = await SharedPreferences.getInstance(); + await prefs.setString(_localeKey, locale.languageCode); } } diff --git a/covas_mobile/lib/main.dart b/covas_mobile/lib/main.dart index c2af5df..f01e1a3 100644 --- a/covas_mobile/lib/main.dart +++ b/covas_mobile/lib/main.dart @@ -26,7 +26,7 @@ class MyApp extends StatelessWidget { return MaterialApp( debugShowCheckedModeBanner: false, locale: localeProvider.locale, // <-- utilise la locale courante - supportedLocales: const [Locale('en'), Locale('fr'), Locale('de')], + supportedLocales: L10n.all, localizationsDelegates: AppLocalizations.localizationsDelegates, home: LoginDemo(), );