Исправлено переключение локали на экране сканера
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.dinect.checker"
|
package="com.dinect.checker"
|
||||||
android:versionCode="1"
|
android:versionCode="1"
|
||||||
android:versionName="1.0.5">
|
android:versionName="1.1.0">
|
||||||
|
|
||||||
<uses-sdk
|
<uses-sdk
|
||||||
android:minSdkVersion="16"
|
android:minSdkVersion="16"
|
||||||
|
|||||||
@@ -210,8 +210,10 @@ public abstract class AbstractScannerActivity extends AppCompatActivity {
|
|||||||
} else {
|
} else {
|
||||||
handleFail(card);
|
handleFail(card);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
case 204:
|
case 204:
|
||||||
handleFail(card);
|
handleFail(card);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (final IOException | JSONException e) {
|
} catch (final IOException | JSONException e) {
|
||||||
|
|||||||
@@ -111,6 +111,14 @@ public class MainActivity extends FlutterActivity {
|
|||||||
result.success(connected);
|
result.success(connected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setLocale(String locale) {
|
||||||
|
Resources res = getResources();
|
||||||
|
Configuration configuration = new Configuration(res.getConfiguration());
|
||||||
|
configuration.locale = new Locale(locale);
|
||||||
|
Locale.setDefault(configuration.locale);
|
||||||
|
res.updateConfiguration(configuration, res.getDisplayMetrics());
|
||||||
|
}
|
||||||
|
|
||||||
private void startScannerActivity() {
|
private void startScannerActivity() {
|
||||||
final int idx = getSharedPreferences("scanner", Context.MODE_PRIVATE).getInt(SCANNER_BACKEND_KEY, 0);
|
final int idx = getSharedPreferences("scanner", Context.MODE_PRIVATE).getInt(SCANNER_BACKEND_KEY, 0);
|
||||||
Intent cameraIntent = new Intent(MainActivity.this, SCANNER_BACKEND[idx]);
|
Intent cameraIntent = new Intent(MainActivity.this, SCANNER_BACKEND[idx]);
|
||||||
@@ -118,6 +126,7 @@ public class MainActivity extends FlutterActivity {
|
|||||||
cameraIntent.putExtra(PREF_APP_TOKEN, (String) mScannerArgs.get("appToken"));
|
cameraIntent.putExtra(PREF_APP_TOKEN, (String) mScannerArgs.get("appToken"));
|
||||||
cameraIntent.putExtra(PREF_POS_TOKEN, (String) mScannerArgs.get("token"));
|
cameraIntent.putExtra(PREF_POS_TOKEN, (String) mScannerArgs.get("token"));
|
||||||
cameraIntent.putExtra(PREF_APP_BAR_COLOR, (Long) mScannerArgs.get("color"));
|
cameraIntent.putExtra(PREF_APP_BAR_COLOR, (Long) mScannerArgs.get("color"));
|
||||||
|
setLocale((String) mScannerArgs.get("locale"));
|
||||||
startActivityForResult(cameraIntent, START_SCANNER_REQUEST_CODE);
|
startActivityForResult(cameraIntent, START_SCANNER_REQUEST_CODE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,6 +170,10 @@ public class MainActivity extends FlutterActivity {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setUserLocale() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public void startScanner() {
|
public void startScanner() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,9 +51,6 @@ public class ScannerActivity extends AbstractScannerActivity
|
|||||||
initToolbar(getIntent());
|
initToolbar(getIntent());
|
||||||
|
|
||||||
scannerView = (ZXingScannerView) initScanner();
|
scannerView = (ZXingScannerView) initScanner();
|
||||||
ArrayList<BarcodeFormat> formats = new ArrayList<>();
|
|
||||||
formats.add(BarcodeFormat.UPC_EAN_EXTENSION);
|
|
||||||
scannerView.setFormats(formats);
|
|
||||||
addScanner(scannerView, R.id.zxingRoot);
|
addScanner(scannerView, R.id.zxingRoot);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,15 +14,13 @@ abstract class SettingsBaseState<T extends StatefulWidget> extends BaseState<T>
|
|||||||
int selectedItem;
|
int selectedItem;
|
||||||
|
|
||||||
@override Widget build(BuildContext context) {
|
@override Widget build(BuildContext context) {
|
||||||
return getMainWidget();
|
return new Scaffold(appBar: getAppBar(),
|
||||||
|
body: getScreenContent());
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget getScreenContent() {
|
Widget getScreenContent() {
|
||||||
|
|
||||||
getSelectedValue();
|
getSelectedValue();
|
||||||
|
|
||||||
|
|
||||||
List<Widget> widgets = new List();
|
List<Widget> widgets = new List();
|
||||||
|
|
||||||
for (String option in getOptions()) {
|
for (String option in getOptions()) {
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ startScanner(BuildContext context, String app, SqliteHelper helper) async {
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
String token = await helper.getToken();
|
String token = await helper.getToken();
|
||||||
|
String locale = await helper.getLocale();
|
||||||
helper.close();
|
helper.close();
|
||||||
// Канал ловит вызовы методов из "нативной" части приложения.
|
// Канал ловит вызовы методов из "нативной" части приложения.
|
||||||
// Могут быть вызваны либо logout либо faq, либо purchase.
|
// Могут быть вызваны либо logout либо faq, либо purchase.
|
||||||
@@ -119,6 +120,7 @@ startScanner(BuildContext context, String app, SqliteHelper helper) async {
|
|||||||
'token': token,
|
'token': token,
|
||||||
'url': url,
|
'url': url,
|
||||||
'appToken': appToken,
|
'appToken': appToken,
|
||||||
|
'locale': locale,
|
||||||
'color': Resources
|
'color': Resources
|
||||||
.getPrimaryColor(app)
|
.getPrimaryColor(app)
|
||||||
.value
|
.value
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ import 'package:flutter/material.dart';
|
|||||||
// Serious constants
|
// Serious constants
|
||||||
const String appName = "Autobonus";
|
const String appName = "Autobonus";
|
||||||
|
|
||||||
//const String url = 'https://pos-api-autoclub.dinect.com/20130701/';
|
const String url = 'https://pos-api-autoclub.dinect.com/20130701/';
|
||||||
//const String appToken = 'bdea0f3ba9034b688019a7cac753d1209e2b227f';
|
const String appToken = 'bdea0f3ba9034b688019a7cac753d1209e2b227f';
|
||||||
|
|
||||||
const String url = 'https://pos-api-int.dinect.com/20130701/';
|
//const String url = 'https://pos-api-int.dinect.com/20130701/';
|
||||||
const String appToken = '9fec83cdca38c357e6b65dbb17514cdd36bf2a08';
|
//const String appToken = '9fec83cdca38c357e6b65dbb17514cdd36bf2a08';
|
||||||
|
|
||||||
// Assets
|
// Assets
|
||||||
const String logout_png = 'assets/logout.png';
|
const String logout_png = 'assets/logout.png';
|
||||||
|
|||||||
@@ -70,7 +70,6 @@ class SqliteHelper {
|
|||||||
return null;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
return db.insert(tableSettings, {
|
return db.insert(tableSettings, {
|
||||||
columnLocale: locale,
|
|
||||||
columnCurrency: currency
|
columnCurrency: currency
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ class MessageLookup extends MessageLookupByLibrary {
|
|||||||
"usage_guide": MessageLookupByLibrary.simpleMessage('''
|
"usage_guide": MessageLookupByLibrary.simpleMessage('''
|
||||||
Шаг 1:
|
Шаг 1:
|
||||||
|
|
||||||
Запустите прилодение для сканирования карты участника системы лояльности.
|
Запустите приложение для сканирования карты участника системы лояльности.
|
||||||
|
|
||||||
При успешном сканировании на вашем экране появятся данные покупателя.
|
При успешном сканировании на вашем экране появятся данные покупателя.
|
||||||
|
|
||||||
|
|||||||
@@ -40,19 +40,23 @@ class LanguagesState extends SettingsBaseState<LanguagesScreen> {
|
|||||||
saveOption() async {
|
saveOption() async {
|
||||||
await helper.saveLocale(languages[selectedItem]);
|
await helper.saveLocale(languages[selectedItem]);
|
||||||
Intl.defaultLocale = languages[selectedItem];
|
Intl.defaultLocale = languages[selectedItem];
|
||||||
StringsLocalization.load(languages[selectedItem]).then((_) {
|
await StringsLocalization.load(languages[selectedItem]);
|
||||||
setState(() {
|
|
||||||
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void getSelectedValue() {
|
void getSelectedValue() {
|
||||||
helper.getLocale().then((locale) {
|
helper.getLocale().then((locale) {
|
||||||
|
if (locale == null) {
|
||||||
|
platform.invokeMethod('getLocale').then((locale) {
|
||||||
|
setState(() {
|
||||||
|
selectedItem == locale;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
} else {
|
||||||
setState(() {
|
setState(() {
|
||||||
selectedItem = getOptions().indexOf(getLocaleTitle(locale));
|
selectedItem = getOptions().indexOf(getLocaleTitle(locale));
|
||||||
});
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -7,6 +7,7 @@ import 'package:checker/screens/currencies.dart';
|
|||||||
import 'package:checker/screens/languages.dart';
|
import 'package:checker/screens/languages.dart';
|
||||||
import 'package:checker/strings.dart';
|
import 'package:checker/strings.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:intl/intl.dart';
|
||||||
|
|
||||||
class SettingsScreen extends BaseScreen {
|
class SettingsScreen extends BaseScreen {
|
||||||
|
|
||||||
@@ -28,8 +29,8 @@ class MenuItem {
|
|||||||
class SettingsState extends BaseState<SettingsScreen> {
|
class SettingsState extends BaseState<SettingsScreen> {
|
||||||
|
|
||||||
List<MenuItem> menuItems = [
|
List<MenuItem> menuItems = [
|
||||||
new MenuItem(StringsLocalization.currency(), ''),
|
new MenuItem('', ''),
|
||||||
new MenuItem(StringsLocalization.locale(), '')
|
new MenuItem('', '')
|
||||||
];
|
];
|
||||||
|
|
||||||
bool returnToScanner;
|
bool returnToScanner;
|
||||||
@@ -42,23 +43,24 @@ class SettingsState extends BaseState<SettingsScreen> {
|
|||||||
|
|
||||||
@override Widget build(BuildContext ctx) {
|
@override Widget build(BuildContext ctx) {
|
||||||
helper.getSettings().then((info) {
|
helper.getSettings().then((info) {
|
||||||
if (menuItems != null) {
|
|
||||||
if (menuItems[0].selectedValue != info['currency'].toString()) {
|
|
||||||
setState(() {
|
setState(() {
|
||||||
|
menuItems[0].title = StringsLocalization.currency();
|
||||||
|
menuItems[1].title = StringsLocalization.locale();
|
||||||
menuItems[0].selectedValue = info['currency'].toString();
|
menuItems[0].selectedValue = info['currency'].toString();
|
||||||
menuItems[1].selectedValue = info['locale'].toString();
|
menuItems[1].selectedValue = info['locale'] == null ? Intl.defaultLocale : info['locale'].toString();
|
||||||
});
|
});
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return new WillPopScope(onWillPop: onWillPop, child: getMainWidget());
|
return new WillPopScope(onWillPop: onWillPop, child: getMainWidget());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Widget getMainWidget() {
|
||||||
|
return new Scaffold(appBar: getAppBar(),
|
||||||
|
body: getScreenContent());
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget getScreenContent() {
|
Widget getScreenContent() {
|
||||||
return menuItems == null
|
return new Container(
|
||||||
? getBackground()
|
|
||||||
: new Container(
|
|
||||||
margin: new EdgeInsets.only(top: 16.0),
|
margin: new EdgeInsets.only(top: 16.0),
|
||||||
child: new ListView(children: getSettings()));
|
child: new ListView(children: getSettings()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,24 +38,43 @@ class _SplashScreenState extends BaseState<SplashScreen> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void onStart() {
|
void onStart() {
|
||||||
helper.getSettings().then((info) {
|
helper.getLocale().then((locale) {
|
||||||
if (info == null) {
|
if (locale == null) {
|
||||||
platform.invokeMethod('getCurrency').then((currency) {
|
initWithSystemValue();
|
||||||
|
} else {
|
||||||
|
initWithSavedValue();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void initWithSystemValue() {
|
||||||
platform.invokeMethod('getLocale').then((locale) {
|
platform.invokeMethod('getLocale').then((locale) {
|
||||||
|
helper.getSettings().then((settings) {
|
||||||
|
if (settings == null) {
|
||||||
|
createSettingsTable(locale);
|
||||||
|
} else {
|
||||||
initLocale(locale, () {
|
initLocale(locale, () {
|
||||||
helper.createAppInfo(locale, currency).then((_) {
|
|
||||||
showNext();
|
showNext();
|
||||||
});
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
} else {
|
|
||||||
|
void initWithSavedValue() {
|
||||||
helper.getLocale().then((locale) {
|
helper.getLocale().then((locale) {
|
||||||
initLocale(locale, () {
|
initLocale(locale, () {
|
||||||
showNext();
|
showNext();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void createSettingsTable(String locale) {
|
||||||
|
platform.invokeMethod('getCurrency').then((currency) {
|
||||||
|
helper.createAppInfo(locale, currency);
|
||||||
|
initLocale(locale, () {
|
||||||
|
showNext();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user