Skip to content

Commit d8dfc4a

Browse files
authored
Added UserManager.setLocale (#644)
1 parent dbf91cd commit d8dfc4a

File tree

3 files changed

+16
-15
lines changed

3 files changed

+16
-15
lines changed

lib/pages/my_reports_pages/detail/shared_report_widgets.dart

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import 'package:cached_network_image/cached_network_image.dart';
22
import 'package:flutter/material.dart';
33
import 'package:geocoding/geocoding.dart';
4-
import 'package:mosquito_alert_app/utils/UserManager.dart';
54

65
/// Shared widgets for report detail pages
76
class ReportDetailWidgets {
@@ -132,10 +131,6 @@ class ReportUtils {
132131
// 3. Fallback: Reverse geocoding from coordinates
133132
final point = report.location.point;
134133
try {
135-
var locale = await UserManager.getUserLocale();
136-
if (locale != null) {
137-
await setLocaleIdentifier(locale);
138-
}
139134
final placemarks =
140135
await placemarkFromCoordinates(point.latitude, point.longitude);
141136
if (placemarks.isNotEmpty) {

lib/pages/settings_pages/settings_page.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,8 +292,7 @@ class _SettingsPageState extends State<SettingsPage> {
292292
final locale = Locale(languageCode, countryCode);
293293

294294
Utils.language = locale;
295-
UserManager.setLanguage(languageCode);
296-
UserManager.setLanguageCountry(countryCode);
295+
UserManager.setLocale(locale);
297296
application.onLocaleChanged(locale);
298297

299298
final userProvider = Provider.of<UserProvider>(context, listen: false);

lib/utils/UserManager.dart

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'dart:async';
22

3+
import 'package:geocoding/geocoding.dart';
34
import 'package:intl/intl.dart';
45
import 'package:flutter/material.dart';
56
import 'package:mosquito_alert_app/pages/settings_pages/consent_form.dart';
@@ -23,8 +24,7 @@ class UserManager {
2324

2425
await prefs.setBool('firstTime', true);
2526

26-
await setLanguage(Utils.language.languageCode);
27-
await setLanguageCountry(Utils.language.countryCode);
27+
await setLocale(Utils.language);
2828

2929
await Navigator.of(context).push(
3030
MaterialPageRoute(
@@ -47,15 +47,26 @@ class UserManager {
4747
}
4848

4949
//set
50-
static Future<void> setLanguage(language) async {
50+
static Future<void> setLocale(Locale locale) async {
51+
final String languageCode = locale.languageCode;
52+
final String? countryCode = locale.countryCode;
53+
54+
final String localeIdentifier =
55+
countryCode != null ? '${languageCode}_$countryCode' : languageCode;
56+
await setLocaleIdentifier(localeIdentifier); // From geolocator.
57+
await _setLanguage(languageCode);
58+
await _setLanguageCountry(countryCode ?? '');
59+
}
60+
61+
static Future<void> _setLanguage(String language) async {
5162
var prefs = await SharedPreferences.getInstance();
5263
// NOTE: this is important for DateFormat to work correctly
5364
Intl.defaultLocale = Intl.verifiedLocale(language, DateFormat.localeExists,
5465
onFailure: (newLocale) => 'en');
5566
await prefs.setString('language', language);
5667
}
5768

58-
static Future<void> setLanguageCountry(lngCountry) async {
69+
static Future<void> _setLanguageCountry(String lngCountry) async {
5970
var prefs = await SharedPreferences.getInstance();
6071
await prefs.setString('languageCountry', lngCountry);
6172
}
@@ -89,10 +100,6 @@ class UserManager {
89100
return prefs.getString('languageCountry');
90101
}
91102

92-
static Future<String?> getUserLocale() async {
93-
return '${await UserManager.getLanguage()}_${await UserManager.getLanguageCountry()}';
94-
}
95-
96103
static Future<void> migrateHashtagToHashtags() async {
97104
final prefs = await SharedPreferences.getInstance();
98105

0 commit comments

Comments
 (0)