mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2025-03-22 07:08:49 +00:00
CWA-174 | added localeDetection() to Language class, moved languages from change_language.dart to language.dart, localeDetection() called in the settings store
This commit is contained in:
parent
35f1498331
commit
90f66274a2
5 changed files with 40 additions and 22 deletions
|
@ -1,4 +1,21 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:devicelocale/devicelocale.dart';
|
||||||
|
import 'package:intl/intl.dart';
|
||||||
|
|
||||||
|
const Map<String, String> languages = {
|
||||||
|
'en': 'English',
|
||||||
|
'de': 'Deutsch (German)',
|
||||||
|
'es': 'Español (Spanish)',
|
||||||
|
'hi': 'हिंदी (Hindi)',
|
||||||
|
'ja': '日本 (Japanese)',
|
||||||
|
'ko': '한국어 (Korean)',
|
||||||
|
'nl': 'Nederlands (Dutch)',
|
||||||
|
'pl': 'Polski (Polish)',
|
||||||
|
'pt': 'Português (Portuguese)',
|
||||||
|
'ru': 'Русский (Russian)',
|
||||||
|
'uk': 'Українська (Ukrainian)',
|
||||||
|
'zh': '中文 (Chinese)'
|
||||||
|
};
|
||||||
|
|
||||||
class Language with ChangeNotifier {
|
class Language with ChangeNotifier {
|
||||||
Language(this._currentLanguage);
|
Language(this._currentLanguage);
|
||||||
|
@ -11,4 +28,11 @@ class Language with ChangeNotifier {
|
||||||
_currentLanguage = language;
|
_currentLanguage = language;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Future<String> localeDetection() async {
|
||||||
|
String locale = await Devicelocale.currentLocale;
|
||||||
|
locale = Intl.shortLocale(locale);
|
||||||
|
|
||||||
|
return languages.keys.contains(locale) ? locale : 'en';
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -6,21 +6,6 @@ import 'package:cake_wallet/src/domain/common/language.dart';
|
||||||
import 'package:cake_wallet/src/stores/settings/settings_store.dart';
|
import 'package:cake_wallet/src/stores/settings/settings_store.dart';
|
||||||
import 'package:cake_wallet/src/screens/base_page.dart';
|
import 'package:cake_wallet/src/screens/base_page.dart';
|
||||||
|
|
||||||
const Map<String, String> _languages = {
|
|
||||||
'en': 'English',
|
|
||||||
'de': 'Deutsch (German)',
|
|
||||||
'es': 'Español (Spanish)',
|
|
||||||
'hi': 'हिंदी (Hindi)',
|
|
||||||
'ja': '日本 (Japanese)',
|
|
||||||
'ko': '한국어 (Korean)',
|
|
||||||
'nl': 'Nederlands (Dutch)',
|
|
||||||
'pl': 'Polski (Polish)',
|
|
||||||
'pt': 'Português (Portuguese)',
|
|
||||||
'ru': 'Русский (Russian)',
|
|
||||||
'uk': 'Українська (Ukrainian)',
|
|
||||||
'zh': '中文 (Chinese)'
|
|
||||||
};
|
|
||||||
|
|
||||||
class ChangeLanguage extends BasePage {
|
class ChangeLanguage extends BasePage {
|
||||||
@override
|
@override
|
||||||
String get title => S.current.settings_change_language;
|
String get title => S.current.settings_change_language;
|
||||||
|
@ -36,11 +21,11 @@ class ChangeLanguage extends BasePage {
|
||||||
return Container(
|
return Container(
|
||||||
padding: EdgeInsets.only(top: 10.0, bottom: 10.0),
|
padding: EdgeInsets.only(top: 10.0, bottom: 10.0),
|
||||||
child: ListView.builder(
|
child: ListView.builder(
|
||||||
itemCount: _languages.values.length,
|
itemCount: languages.values.length,
|
||||||
itemBuilder: (BuildContext context, int index) {
|
itemBuilder: (BuildContext context, int index) {
|
||||||
final isCurrent = settingsStore.languageCode == null
|
final isCurrent = settingsStore.languageCode == null
|
||||||
? false
|
? false
|
||||||
: _languages.keys.elementAt(index) ==
|
: languages.keys.elementAt(index) ==
|
||||||
settingsStore.languageCode;
|
settingsStore.languageCode;
|
||||||
|
|
||||||
return Container(
|
return Container(
|
||||||
|
@ -48,7 +33,7 @@ class ChangeLanguage extends BasePage {
|
||||||
color: isCurrent ? currentColor : notCurrentColor,
|
color: isCurrent ? currentColor : notCurrentColor,
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
title: Text(
|
title: Text(
|
||||||
_languages.values.elementAt(index),
|
languages.values.elementAt(index),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 16.0,
|
fontSize: 16.0,
|
||||||
color: Theme.of(context).primaryTextTheme.title.color),
|
color: Theme.of(context).primaryTextTheme.title.color),
|
||||||
|
@ -65,7 +50,7 @@ class ChangeLanguage extends BasePage {
|
||||||
),
|
),
|
||||||
content: Text(
|
content: Text(
|
||||||
S.of(context).change_language_to(
|
S.of(context).change_language_to(
|
||||||
_languages.values.elementAt(index)),
|
languages.values.elementAt(index)),
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
),
|
),
|
||||||
actions: <Widget>[
|
actions: <Widget>[
|
||||||
|
@ -76,9 +61,9 @@ class ChangeLanguage extends BasePage {
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
settingsStore.saveLanguageCode(
|
settingsStore.saveLanguageCode(
|
||||||
languageCode:
|
languageCode:
|
||||||
_languages.keys.elementAt(index));
|
languages.keys.elementAt(index));
|
||||||
currentLanguage.setCurrentLanguage(
|
currentLanguage.setCurrentLanguage(
|
||||||
_languages.keys.elementAt(index));
|
languages.keys.elementAt(index));
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
},
|
},
|
||||||
child: Text(S.of(context).change)),
|
child: Text(S.of(context).change)),
|
||||||
|
|
|
@ -13,6 +13,7 @@ import 'package:cake_wallet/src/screens/settings/items/item_headers.dart';
|
||||||
import 'package:cake_wallet/generated/i18n.dart';
|
import 'package:cake_wallet/generated/i18n.dart';
|
||||||
import 'package:cake_wallet/src/domain/common/default_settings_migration.dart';
|
import 'package:cake_wallet/src/domain/common/default_settings_migration.dart';
|
||||||
import 'package:package_info/package_info.dart';
|
import 'package:package_info/package_info.dart';
|
||||||
|
import 'package:cake_wallet/src/domain/common/language.dart';
|
||||||
|
|
||||||
part 'settings_store.g.dart';
|
part 'settings_store.g.dart';
|
||||||
|
|
||||||
|
@ -93,7 +94,7 @@ abstract class SettingsStoreBase with Store {
|
||||||
: sharedPreferences.getInt(currentPinLength);
|
: sharedPreferences.getInt(currentPinLength);
|
||||||
final savedLanguageCode =
|
final savedLanguageCode =
|
||||||
sharedPreferences.getString(currentLanguageCode) == null
|
sharedPreferences.getString(currentLanguageCode) == null
|
||||||
? 'en'
|
? await Language.localeDetection()
|
||||||
: sharedPreferences.getString(currentLanguageCode);
|
: sharedPreferences.getString(currentLanguageCode);
|
||||||
|
|
||||||
final store = SettingsStore(
|
final store = SettingsStore(
|
||||||
|
|
|
@ -211,6 +211,13 @@ packages:
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.6"
|
version: "1.0.6"
|
||||||
|
devicelocale:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: devicelocale
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "0.2.1"
|
||||||
dio:
|
dio:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -47,6 +47,7 @@ dependencies:
|
||||||
hive_flutter: ^0.2.1
|
hive_flutter: ^0.2.1
|
||||||
local_auth: ^0.6.1
|
local_auth: ^0.6.1
|
||||||
package_info: ^0.4.0+13
|
package_info: ^0.4.0+13
|
||||||
|
devicelocale: ^0.2.1
|
||||||
|
|
||||||
# The following adds the Cupertino Icons font to your application.
|
# The following adds the Cupertino Icons font to your application.
|
||||||
# Use with the CupertinoIcons class for iOS style icons.
|
# Use with the CupertinoIcons class for iOS style icons.
|
||||||
|
|
Loading…
Reference in a new issue