Экраны настроек

This commit is contained in:
Ivan Murashov
2017-09-11 14:51:50 +03:00
parent 0dde204dcd
commit 24fdfc15f6
21 changed files with 148 additions and 98 deletions

View File

@@ -42,42 +42,14 @@ android {
productFlavors { productFlavors {
autobonus_en { autobonus {
applicationId 'com.dinect.autobonus'
buildConfigField "String", "locale", "\"en\""
buildConfigField "String", "flavor", "\"autobonus\""
buildConfigField "int", "currency", "643"
}
autobonus_ru {
applicationId 'com.dinect.autobonus' applicationId 'com.dinect.autobonus'
buildConfigField "String", "locale", "\"ru\"" buildConfigField "String", "locale", "\"ru\""
buildConfigField "String", "flavor", "\"autobonus\"" buildConfigField "String", "flavor", "\"autobonus\""
buildConfigField "int", "currency", "643" buildConfigField "int", "currency", "643"
} }
autobonus_ua { pip {
applicationId 'com.dinect.autobonus'
buildConfigField "String", "locale", "\"ua\""
buildConfigField "String", "flavor", "\"autobonus\""
buildConfigField "int", "currency", "643"
}
pip_en {
applicationId 'com.dinect.pip'
buildConfigField "String", "locale", "\"en\""
buildConfigField "String", "flavor", "\"pip\""
buildConfigField "int", "currency", "980"
}
pip_ru {
applicationId 'com.dinect.pip'
buildConfigField "String", "locale", "\"ru\""
buildConfigField "String", "flavor", "\"pip\""
buildConfigField "int", "currency", "980"
}
pip_ua {
applicationId 'com.dinect.pip' applicationId 'com.dinect.pip'
buildConfigField "String", "locale", "\"ua\"" buildConfigField "String", "locale", "\"ua\""
buildConfigField "String", "flavor", "\"pip\"" buildConfigField "String", "flavor", "\"pip\""
@@ -90,20 +62,11 @@ android {
main.jniLibs.srcDir 'jniLibs' main.jniLibs.srcDir 'jniLibs'
pip_ua { pip {
res.srcDirs = ['src/pip/res'] res.srcDirs = ['src/pip/res']
manifest.srcFile 'src/pip/AndroidManifest.xml' manifest.srcFile 'src/pip/AndroidManifest.xml'
} }
pip_ru {
res.srcDirs = ['src/pip/res']
manifest.srcFile 'src/pip/AndroidManifest.xml'
}
pip_en {
res.srcDirs = ['src/pip/res']
manifest.srcFile 'src/pip/AndroidManifest.xml'
}
} }
} }

BIN
assets/check.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1,46 @@
import 'package:checker/base/base_state.dart';
import 'package:checker/consts.dart';
import 'package:checker/strings.dart';
import 'package:flutter/material.dart';
abstract class SettingsBaseState<T extends StatefulWidget> extends BaseState<T> {
@override
Widget getScreenContent() {
List<Widget> widgets = new List();
for (String option in getOptions()) {
widgets.add(getItem(option));
}
return new ListView(children: widgets);
}
List<String> getOptions();
@override
List<Widget> getMenuButtons() {
return null;
}
Widget getItem(String option) {
return new Container(
height: 56.0,
child: (new FlatButton(onPressed: null,
child: new Row(children: <Widget>[
new Expanded(child: new Text(option)),
getCheckMark()]))));
}
Widget getCheckMark() {
return new Image.asset(check_png,
width: 28.0,
height: 28.0);
}
@override
String getTitle() {
return StringsLocalization.settings();
}
}

View File

@@ -137,8 +137,8 @@ getCurrencyTitle(int code) {
getLocaleTitle(String code) { getLocaleTitle(String code) {
switch(code) { switch(code) {
case 'ru': return StringsLocalization.russian(); case 'ru': return languages[0];
case 'en': return StringsLocalization.english(); case 'en': return languages[1];
case 'ua': return StringsLocalization.ukrainian(); case 'ua': return languages[2];
} }
} }

View File

@@ -11,15 +11,12 @@ const String logout_png = 'assets/logout.png';
const String help_png = 'assets/help.png'; const String help_png = 'assets/help.png';
const String settings_png = 'assets/settings.png'; const String settings_png = 'assets/settings.png';
const String settings_arrow_png = 'assets/settings_arrow.png'; const String settings_arrow_png = 'assets/settings_arrow.png';
const String check_png = 'assets/check.png';
const String activate_token_bg_png = 'assets/activate_token_message_background.png'; const String activate_token_bg_png = 'assets/activate_token_message_background.png';
const String active_token_bg_png = 'assets/active_token_message_background.png'; const String active_token_bg_png = 'assets/active_token_message_background.png';
const String expansion_icon_png = 'assets/faq_expansion_icon.png'; const String expansion_icon_png = 'assets/faq_expansion_icon.png';
const String powered_by_dinect_splash_png = 'assets/powered_by_dinect_splash.png'; const String powered_by_dinect_splash_png = 'assets/powered_by_dinect_splash.png';
const String powered_by_dinect_png = 'assets/powered_by_dinect.png'; const String powered_by_dinect_png = 'assets/powered_by_dinect.png';
const String splash_text_png = 'assets/splash_text.png'; const String splash_text_png = 'assets/splash_text.png';
const Color greyTextColor = const Color(0xffa5a5a5); const Color greyTextColor = const Color(0xffa5a5a5);
@@ -35,3 +32,10 @@ const Color inputFieldBackground = const Color(0xffefefef);
const double verticalMargin = 28.0; const double verticalMargin = 28.0;
const double buttonHeight = 48.0; const double buttonHeight = 48.0;
const double iconHeight = 20.0; const double iconHeight = 20.0;
List<String> languages = const [
'Русский',
'English',
'Український',
'Español'
];

View File

@@ -40,13 +40,10 @@ class MessageLookup extends MessageLookupByLibrary {
"user_name" : MessageLookupByLibrary.simpleMessage("User name"), "user_name" : MessageLookupByLibrary.simpleMessage("User name"),
"yes" : MessageLookupByLibrary.simpleMessage("Yes"), "yes" : MessageLookupByLibrary.simpleMessage("Yes"),
"settings" : MessageLookupByLibrary.simpleMessage("Settings"), "settings" : MessageLookupByLibrary.simpleMessage("Settings"),
"help " : MessageLookupByLibrary.simpleMessage("FAQ"), "help" : MessageLookupByLibrary.simpleMessage("Help"),
"logout" : MessageLookupByLibrary.simpleMessage("Logout"), "logout" : MessageLookupByLibrary.simpleMessage("Exit"),
"currency" : MessageLookupByLibrary.simpleMessage("Currency"), "currency" : MessageLookupByLibrary.simpleMessage("Currency"),
"locale" : MessageLookupByLibrary.simpleMessage("Locale"), "locale" : MessageLookupByLibrary.simpleMessage("Language"),
"russian" : MessageLookupByLibrary.simpleMessage("Russian"),
"english" : MessageLookupByLibrary.simpleMessage("English"),
"ukrainian" : MessageLookupByLibrary.simpleMessage("Ukrainian"),
"rubles" : MessageLookupByLibrary.simpleMessage("Ruble"), "rubles" : MessageLookupByLibrary.simpleMessage("Ruble"),
"dollars" : MessageLookupByLibrary.simpleMessage("Dollar"), "dollars" : MessageLookupByLibrary.simpleMessage("Dollar"),
"hryvna" : MessageLookupByLibrary.simpleMessage("Hryvna") "hryvna" : MessageLookupByLibrary.simpleMessage("Hryvna")

View File

@@ -39,12 +39,11 @@ class MessageLookup extends MessageLookupByLibrary {
"update_activ_status" : MessageLookupByLibrary.simpleMessage("Actualizar la condición de activación"), "update_activ_status" : MessageLookupByLibrary.simpleMessage("Actualizar la condición de activación"),
"user_name" : MessageLookupByLibrary.simpleMessage("Un nombre de usario"), "user_name" : MessageLookupByLibrary.simpleMessage("Un nombre de usario"),
"yes" : MessageLookupByLibrary.simpleMessage("Si"), "yes" : MessageLookupByLibrary.simpleMessage("Si"),
"logout" : MessageLookupByLibrary.simpleMessage("Logout"), "settings" : MessageLookupByLibrary.simpleMessage("Las configuraciones"),
"currency" : MessageLookupByLibrary.simpleMessage("Currency"), "help" : MessageLookupByLibrary.simpleMessage("La Ayuda"),
"locale" : MessageLookupByLibrary.simpleMessage("Locale"), "logout" : MessageLookupByLibrary.simpleMessage("Salir"),
"russian" : MessageLookupByLibrary.simpleMessage("Russian"), "currency" : MessageLookupByLibrary.simpleMessage("La Moneda"),
"english" : MessageLookupByLibrary.simpleMessage("English"), "locale" : MessageLookupByLibrary.simpleMessage("La lengua"),
"ukrainian" : MessageLookupByLibrary.simpleMessage("Ukrainian"),
"rubles" : MessageLookupByLibrary.simpleMessage("Ruble"), "rubles" : MessageLookupByLibrary.simpleMessage("Ruble"),
"dollars" : MessageLookupByLibrary.simpleMessage("Dollar"), "dollars" : MessageLookupByLibrary.simpleMessage("Dollar"),
"hryvna" : MessageLookupByLibrary.simpleMessage("Hryvna") "hryvna" : MessageLookupByLibrary.simpleMessage("Hryvna")

View File

@@ -40,13 +40,10 @@ class MessageLookup extends MessageLookupByLibrary {
"user_name" : MessageLookupByLibrary.simpleMessage("ФИО"), "user_name" : MessageLookupByLibrary.simpleMessage("ФИО"),
"yes" : MessageLookupByLibrary.simpleMessage("Да"), "yes" : MessageLookupByLibrary.simpleMessage("Да"),
"settings" : MessageLookupByLibrary.simpleMessage("Настройки"), "settings" : MessageLookupByLibrary.simpleMessage("Настройки"),
"help " : MessageLookupByLibrary.simpleMessage("Справка"), "help" : MessageLookupByLibrary.simpleMessage("Справка"),
"logout" : MessageLookupByLibrary.simpleMessage("Выход"), "logout" : MessageLookupByLibrary.simpleMessage("Выход"),
"currency" : MessageLookupByLibrary.simpleMessage("Валюта"), "currency" : MessageLookupByLibrary.simpleMessage("Валюта"),
"locale" : MessageLookupByLibrary.simpleMessage("Язык"), "locale" : MessageLookupByLibrary.simpleMessage("Язык"),
"russian" : MessageLookupByLibrary.simpleMessage("Русский"),
"english" : MessageLookupByLibrary.simpleMessage("Английский"),
"ukrainian" : MessageLookupByLibrary.simpleMessage("Украинский"),
"rubles" : MessageLookupByLibrary.simpleMessage("Рубль"), "rubles" : MessageLookupByLibrary.simpleMessage("Рубль"),
"dollars" : MessageLookupByLibrary.simpleMessage("Доллар"), "dollars" : MessageLookupByLibrary.simpleMessage("Доллар"),
"hryvna" : MessageLookupByLibrary.simpleMessage("Гривна") "hryvna" : MessageLookupByLibrary.simpleMessage("Гривна")

View File

@@ -39,12 +39,11 @@ class MessageLookup extends MessageLookupByLibrary {
"update_activ_status" : MessageLookupByLibrary.simpleMessage("Оновити статус активації"), "update_activ_status" : MessageLookupByLibrary.simpleMessage("Оновити статус активації"),
"user_name" : MessageLookupByLibrary.simpleMessage("ПІБ"), "user_name" : MessageLookupByLibrary.simpleMessage("ПІБ"),
"yes" : MessageLookupByLibrary.simpleMessage("Так"), "yes" : MessageLookupByLibrary.simpleMessage("Так"),
"logout" : MessageLookupByLibrary.simpleMessage("Logout"), "help" : MessageLookupByLibrary.simpleMessage("Допомога"),
"currency" : MessageLookupByLibrary.simpleMessage("Currency"), "settings" : MessageLookupByLibrary.simpleMessage("Налаштування"),
"locale" : MessageLookupByLibrary.simpleMessage("Locale"), "logout" : MessageLookupByLibrary.simpleMessage("Вихід"),
"russian" : MessageLookupByLibrary.simpleMessage("Russian"), "currency" : MessageLookupByLibrary.simpleMessage("Валюта"),
"english" : MessageLookupByLibrary.simpleMessage("English"), "locale" : MessageLookupByLibrary.simpleMessage("Мова"),
"ukrainian" : MessageLookupByLibrary.simpleMessage("Ukrainian"),
"rubles" : MessageLookupByLibrary.simpleMessage("Ruble"), "rubles" : MessageLookupByLibrary.simpleMessage("Ruble"),
"dollars" : MessageLookupByLibrary.simpleMessage("Dollar"), "dollars" : MessageLookupByLibrary.simpleMessage("Dollar"),
"hryvna" : MessageLookupByLibrary.simpleMessage("Hryvna") "hryvna" : MessageLookupByLibrary.simpleMessage("Hryvna")

View File

@@ -0,0 +1,27 @@
import 'package:checker/base/settings_base_state.dart';
import 'package:flutter/material.dart';
import 'package:checker/consts.dart';
import 'package:checker/strings.dart';
import 'package:checker/base/base_state.dart';
class CurrenciesScreen extends StatefulWidget {
@override State createState() => new _CurrenciesState();
}
class _CurrenciesState extends SettingsBaseState<CurrenciesScreen> {
@override
List<String> getOptions() {
String ruble = StringsLocalization.ruble();
String dollar = StringsLocalization.dollar();
String hryvna = StringsLocalization.hryvna();
return [ruble, dollar, hryvna];
}
@override
String getTitle() {
return StringsLocalization.settings();
}
}

View File

@@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:checker/base_state.dart'; import 'package:checker/base/base_state.dart';
import 'package:checker/consts.dart'; import 'package:checker/consts.dart';
import 'package:checker/common.dart'; import 'package:checker/common.dart';

View File

@@ -5,7 +5,7 @@ import 'dart:convert'; // Пакет для обработки json с отве
import 'package:checker/common.dart'; import 'package:checker/common.dart';
import 'package:checker/consts.dart'; import 'package:checker/consts.dart';
import 'package:checker/network.dart'; import 'package:checker/network.dart';
import 'package:checker/base_state.dart'; import 'package:checker/base/base_state.dart';
import 'package:checker/strings.dart'; import 'package:checker/strings.dart';
class FinishRegistrationScreen extends StatefulWidget { class FinishRegistrationScreen extends StatefulWidget {

View File

@@ -0,0 +1,21 @@
import 'package:checker/base/settings_base_state.dart';
import 'package:flutter/material.dart';
import 'package:checker/consts.dart';
import 'package:checker/strings.dart';
class LanguagesScreen extends StatefulWidget {
@override State createState() => new _LanguagesState();
}
class _LanguagesState extends SettingsBaseState<LanguagesScreen> {
@override
List<String> getOptions() {
return languages;
}
@override
String getTitle() {
return StringsLocalization.locale();
}
}

View File

@@ -8,7 +8,7 @@ import 'package:checker/strings.dart';
import 'package:checker/common.dart'; import 'package:checker/common.dart';
import 'package:checker/consts.dart'; import 'package:checker/consts.dart';
import 'package:checker/network.dart'; import 'package:checker/network.dart';
import 'package:checker/base_state.dart'; import 'package:checker/base/base_state.dart';
import 'package:checker/screens/purchase_success.dart'; import 'package:checker/screens/purchase_success.dart';
/// Экран проведения покупки. /// Экран проведения покупки.

View File

@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:checker/common.dart'; import 'package:checker/common.dart';
import 'package:checker/consts.dart'; import 'package:checker/consts.dart';
import 'package:checker/strings.dart'; import 'package:checker/strings.dart';
import 'package:checker/base_state.dart'; import 'package:checker/base/base_state.dart';
/// Экран проведения покупки. /// Экран проведения покупки.
class PurchaseSuccessScreen extends StatefulWidget { class PurchaseSuccessScreen extends StatefulWidget {

View File

@@ -5,7 +5,7 @@ import 'dart:convert'; // Пакет для обработки json с отве
import 'package:checker/common.dart'; import 'package:checker/common.dart';
import 'package:checker/consts.dart'; import 'package:checker/consts.dart';
import 'package:checker/network.dart'; import 'package:checker/network.dart';
import 'package:checker/base_state.dart'; import 'package:checker/base/base_state.dart';
import 'package:checker/strings.dart'; import 'package:checker/strings.dart';
/// Экран регистрации магазина и кассы. /// Экран регистрации магазина и кассы.

View File

@@ -1,15 +1,10 @@
import 'package:checker/screens/currencies.dart';
import 'package:checker/screens/languages.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:http/http.dart';
import 'dart:convert';
import 'dart:async';
import 'package:checker/common.dart'; import 'package:checker/common.dart';
import 'package:checker/network.dart';
import 'package:checker/consts.dart'; import 'package:checker/consts.dart';
import 'package:checker/db.dart';
import 'package:checker/strings.dart'; import 'package:checker/strings.dart';
import 'package:checker/base_state.dart'; import 'package:checker/base/base_state.dart';
import 'package:checker/screens/registration.dart';
import 'package:checker/screens/finish_registration.dart';
class SettingsScreen extends StatefulWidget { class SettingsScreen extends StatefulWidget {
@override State createState() => new _SettingsState(); @override State createState() => new _SettingsState();
@@ -63,18 +58,23 @@ class _SettingsState extends BaseState<SettingsScreen> {
Widget getSettingsItem(MenuItem item) { Widget getSettingsItem(MenuItem item) {
return new Container( return new Container(
margin: const EdgeInsets.all(16.0), height: 56.0,
child: (new FlatButton(onPressed: () => onPressed(menuItems.indexOf(item)),
child: new Row(children: <Widget>[ child: new Row(children: <Widget>[
new Expanded(child: new Text(item.title)), new Expanded(child: new Container(child: new Text(item.title))),
new Text(item.selectedValue), new Text(item.selectedValue),
getArrow()]) getArrow()]))));
); }
void onPressed(int position) {
switch (position) {
case 0 : return pushRoute(context, new LanguagesScreen());
case 1 : return pushRoute(context, new CurrenciesScreen());
}
} }
Widget getArrow() { Widget getArrow() {
return new Image.asset(settings_arrow_png, return new Image.asset(settings_arrow_png);
width: 28.0,
height: 28.0);
} }
@override @override

View File

@@ -9,7 +9,7 @@ import 'package:checker/network.dart';
import 'package:checker/consts.dart'; import 'package:checker/consts.dart';
import 'package:checker/resources.dart'; import 'package:checker/resources.dart';
import 'package:checker/db.dart'; import 'package:checker/db.dart';
import 'package:checker/base_state.dart'; import 'package:checker/base/base_state.dart';
import 'package:checker/screens/registration.dart'; import 'package:checker/screens/registration.dart';
import 'package:checker/screens/finish_registration.dart'; import 'package:checker/screens/finish_registration.dart';
@@ -27,6 +27,7 @@ class _SplashScreenState extends BaseState<SplashScreen> {
helper.getSettings().then((info) { helper.getSettings().then((info) {
if (info == null) { if (info == null) {
platform.invokeMethod('getLocale').then((locale) { platform.invokeMethod('getLocale').then((locale) {
Intl.defaultLocale = locale;
platform.invokeMethod('getCurrency').then((currency) { platform.invokeMethod('getCurrency').then((currency) {
helper.createAppInfo(locale, currency).then((_) { helper.createAppInfo(locale, currency).then((_) {
showNext(); showNext();

View File

@@ -40,16 +40,11 @@ class StringsLocalization {
static String buyer() => Intl.message('buyer', name: 'buyer', locale: Intl.defaultLocale); static String buyer() => Intl.message('buyer', name: 'buyer', locale: Intl.defaultLocale);
static String idNotFound() => Intl.message('ID_not_found', name: 'ID_not_found', locale: Intl.defaultLocale); static String idNotFound() => Intl.message('ID_not_found', name: 'ID_not_found', locale: Intl.defaultLocale);
static String settings() => Intl.message('settings', name: 'settings', locale: Intl.defaultLocale); static String settings() => Intl.message('settings', name: 'settings', locale: Intl.defaultLocale);
static String help() => Intl.message('help ', name: 'help ', locale: Intl.defaultLocale); static String help() => Intl.message('help', name: 'help', locale: Intl.defaultLocale);
static String logout() => Intl.message('logout', name: 'logout', locale: Intl.defaultLocale); static String logout() => Intl.message('logout', name: 'logout', locale: Intl.defaultLocale);
static String currency() => Intl.message('currency', name: 'currency', locale: Intl.defaultLocale); static String currency() => Intl.message('currency', name: 'currency', locale: Intl.defaultLocale);
static String locale() => Intl.message('locale', name: 'locale', locale: Intl.defaultLocale); static String locale() => Intl.message('locale', name: 'locale', locale: Intl.defaultLocale);
// Языки
static String russian() => Intl.message('russian', name: 'russian', locale: Intl.defaultLocale);
static String english() => Intl.message('english', name: 'english', locale: Intl.defaultLocale);
static String ukrainian() => Intl.message('ukrainian', name: 'ukrainian', locale: Intl.defaultLocale);
// Валюты // Валюты
static String ruble() => Intl.message('rubles', name: 'rubles', locale: Intl.defaultLocale); static String ruble() => Intl.message('rubles', name: 'rubles', locale: Intl.defaultLocale);
static String dollar() => Intl.message('dollars', name: 'dollars', locale: Intl.defaultLocale); static String dollar() => Intl.message('dollars', name: 'dollars', locale: Intl.defaultLocale);

View File

@@ -35,6 +35,7 @@ flutter:
- assets/settings.png - assets/settings.png
- assets/settings_arrow.png - assets/settings_arrow.png
- assets/help.png - assets/help.png
- assets/check.png
- assets/logout.png - assets/logout.png
- assets/activate_token_message_background.png - assets/activate_token_message_background.png
- assets/active_token_message_background.png - assets/active_token_message_background.png