|
|
|
@@ -1,9 +1,11 @@
|
|
|
|
|
import 'package:checker/resources.dart';
|
|
|
|
|
import 'package:checker/strings.dart';
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
|
|
|
|
|
import 'package:checker/base/base_state.dart';
|
|
|
|
|
import 'package:checker/consts.dart';
|
|
|
|
|
import 'package:checker/common.dart';
|
|
|
|
|
import 'package:checker/db.dart';
|
|
|
|
|
|
|
|
|
|
/// Класс содержит заголовки и текст блоков FAQ.
|
|
|
|
|
class Entry {
|
|
|
|
@@ -13,20 +15,44 @@ class Entry {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class EntryItem extends StatelessWidget {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const EntryItem(this.entry);
|
|
|
|
|
final Entry entry;
|
|
|
|
|
|
|
|
|
|
Widget _buildTiles(BuildContext context, Entry root) {
|
|
|
|
|
EdgeInsets margin = new EdgeInsets.only(left: 20.0, right: 20.0);
|
|
|
|
|
TextStyle titleStyle = Theme.of(context).textTheme.button.copyWith(fontWeight: FontWeight.bold, color: faqTitlesColor);
|
|
|
|
|
return new Container(margin: margin, child: new Card(child: new ExpansionTile(
|
|
|
|
|
key: new PageStorageKey<Entry>(root),
|
|
|
|
|
title:new Text(root.title, style: titleStyle),
|
|
|
|
|
children: [new Container(margin: margin, padding: new EdgeInsets.only(top: 12.0, bottom: 20.0),
|
|
|
|
|
child: new Text(root.text, style: new TextStyle(fontWeight: FontWeight.w300, color: faqGrey, fontSize: 14.0)),
|
|
|
|
|
decoration: new BoxDecoration(border: new Border(top: new BorderSide(color: greyTextColor, width: 0.5))))]
|
|
|
|
|
)));
|
|
|
|
|
TextStyle titleStyle = Theme.of(context).textTheme.button.copyWith(
|
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
|
color: faqTitlesColor);
|
|
|
|
|
return new Container(margin: margin, child: new Card(
|
|
|
|
|
child: new ExpansionTile(
|
|
|
|
|
key: new PageStorageKey<Entry>(root),
|
|
|
|
|
title:new Text(
|
|
|
|
|
root.title,
|
|
|
|
|
style: titleStyle),
|
|
|
|
|
children: [
|
|
|
|
|
new Container(
|
|
|
|
|
margin: margin,
|
|
|
|
|
padding: new EdgeInsets.only(top: 12.0, bottom: 20.0),
|
|
|
|
|
child: new Text(
|
|
|
|
|
root.text,
|
|
|
|
|
style: new TextStyle(
|
|
|
|
|
fontWeight: FontWeight.w300,
|
|
|
|
|
color: faqGrey,
|
|
|
|
|
fontSize: 14.0)
|
|
|
|
|
),
|
|
|
|
|
decoration: new BoxDecoration(
|
|
|
|
|
border: new Border(
|
|
|
|
|
top: new BorderSide(
|
|
|
|
|
color: greyTextColor,
|
|
|
|
|
width: 0.5)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
]
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
@@ -46,14 +72,16 @@ class FAQScreen extends StatefulWidget {
|
|
|
|
|
class FAQScreenState<T> extends BaseState<FAQScreen> {
|
|
|
|
|
|
|
|
|
|
FAQScreenState(this.returnToScanner);
|
|
|
|
|
final bool returnToScanner;
|
|
|
|
|
String app;
|
|
|
|
|
|
|
|
|
|
bool returnToScanner;
|
|
|
|
|
|
|
|
|
|
List<Entry> data;
|
|
|
|
|
|
|
|
|
|
@override String getTitle() {
|
|
|
|
|
return StringsLocalization.help();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override String getHint() {
|
|
|
|
|
@override String getHintString() {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -62,10 +90,32 @@ class FAQScreenState<T> extends BaseState<FAQScreen> {
|
|
|
|
|
platform.invokeMethod('getFlavor').then((flavor) {
|
|
|
|
|
setState(() {
|
|
|
|
|
app = flavor;
|
|
|
|
|
initPhoneAndUrl();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
return new Scaffold(appBar: getAppBar(),body: getScreenContent());
|
|
|
|
|
return new Scaffold(appBar: getAppBar(), body: getScreenContent());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void initPhoneAndUrl() {
|
|
|
|
|
String phone, url;
|
|
|
|
|
if (app == 'pip') {
|
|
|
|
|
phone = 'Tel: +38 080 030 9997\nTel: +38 044 390 1697';
|
|
|
|
|
url = 'http://discount.kiev.ua/';
|
|
|
|
|
} else if (app == 'autobonus') {
|
|
|
|
|
phone = '8-800-234-6064';
|
|
|
|
|
url = 'https://www.auto-club.biz';
|
|
|
|
|
}
|
|
|
|
|
initHelp(phone, url);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void initHelp(String phone, String url) {
|
|
|
|
|
data = <Entry>[
|
|
|
|
|
new Entry(StringsLocalization.registration(), StringsLocalization.registrationGuide()),
|
|
|
|
|
new Entry(StringsLocalization.usage(), StringsLocalization.usageGuide()),
|
|
|
|
|
new Entry(StringsLocalization.support(), StringsLocalization.supportGuide(phone, url)),
|
|
|
|
|
new Entry(StringsLocalization.common(), StringsLocalization.commonGuide())
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override List<Widget> getMenuButtons() {
|
|
|
|
@@ -74,71 +124,25 @@ class FAQScreenState<T> extends BaseState<FAQScreen> {
|
|
|
|
|
|
|
|
|
|
/// Метод возвращает ListView с блоками faq.
|
|
|
|
|
@override Widget getScreenContent() {
|
|
|
|
|
return new WillPopScope(onWillPop: onWillPop, child: new ListView.builder(
|
|
|
|
|
itemBuilder: (BuildContext context, int index) => new EntryItem(data[index]),
|
|
|
|
|
itemCount: data.length));
|
|
|
|
|
if (data == null) {
|
|
|
|
|
return new Container(
|
|
|
|
|
decoration: new BoxDecoration(
|
|
|
|
|
image: new DecorationImage(
|
|
|
|
|
image: new ExactAssetImage(Resources.getSplash(app)),
|
|
|
|
|
fit: BoxFit.cover)));
|
|
|
|
|
} else {
|
|
|
|
|
return new WillPopScope(onWillPop: onWillPop, child: new ListView.builder(
|
|
|
|
|
itemBuilder: (BuildContext context, int index) =>
|
|
|
|
|
new EntryItem(data[index]),
|
|
|
|
|
itemCount: data.length));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
onWillPop() {
|
|
|
|
|
onWillPop() {
|
|
|
|
|
if(returnToScanner) {
|
|
|
|
|
return startScanner(context, app, helper);
|
|
|
|
|
} else {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Список с контентом
|
|
|
|
|
final List<Entry> data = <Entry>[
|
|
|
|
|
new Entry('РЕГИСТРАЦИЯ', registrationGuide),
|
|
|
|
|
new Entry('ИСПОЛЬЗОВАНИЕ', usageGuide),
|
|
|
|
|
new Entry('КОНТАКТЫ ПОДДЕРЖКИ', supportGuide),
|
|
|
|
|
new Entry('ОБЩАЯ ИНФОРМАЦИЯ', commonGuide)
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
static const String registrationGuide = '''
|
|
|
|
|
После запуска приложения вы окажетесь на странице регистрации магазина.
|
|
|
|
|
|
|
|
|
|
Введите DIN код магазина (выдается партнером/менеджером International Auto Club, дублируется на почту)
|
|
|
|
|
|
|
|
|
|
Кликните по кнопке: «Зарегистрировать»
|
|
|
|
|
Дождитесь подтверждение активации программы, кликом по кнопке «Обновите статус активации» обновите статус.
|
|
|
|
|
|
|
|
|
|
После подтверждения запроса на активацию программы Партнером/менеджером кликните по кнопке «Завершить регистрацию», приложение готово к использованию.
|
|
|
|
|
|
|
|
|
|
При желании изменить номер кассы, необходимо кликнуть на «значок» верхнем правом углу и вернуться на шаг регистрации.
|
|
|
|
|
''';
|
|
|
|
|
|
|
|
|
|
static const String usageGuide = '''
|
|
|
|
|
Действие 1:
|
|
|
|
|
|
|
|
|
|
При предъявлении покупателем штрих-кода участника системы лояльности, запустите данное приложение.
|
|
|
|
|
|
|
|
|
|
На экране появится сканер штрих кодов. Отсканируйте предъявленный штрих-код сканером.
|
|
|
|
|
|
|
|
|
|
При успешном сканировании на вашем экране появятся данные партнера.
|
|
|
|
|
|
|
|
|
|
Действие 2:
|
|
|
|
|
|
|
|
|
|
Необходимо ввести сумму покупки данного покупателя и кликнуть по кнопке «Зафиксировать».
|
|
|
|
|
|
|
|
|
|
Всплывет окно подтверждения правильности ввода суммы». В случае правильного ввода суммы, кликните «ДА», сумма будет проведена и вознаграждение будет начислено участнику системы лояльности.
|
|
|
|
|
|
|
|
|
|
Если сумма введена с ошибкой, кликните «НЕТ» и Вы вернетесь на шаг ввода суммы и сможете её скорректировать.
|
|
|
|
|
''';
|
|
|
|
|
|
|
|
|
|
static const String supportGuide = '''
|
|
|
|
|
При некорректной работе приложения AUTO BONUS просьба сразу обратиться по телефону нашей технической поддержки: 8-800-234-6064 (звонок бесплатный) и Вас свяжут с менеджером.
|
|
|
|
|
|
|
|
|
|
При звонке приготовьтесь назвать ИНН и наименование вашей организации.
|
|
|
|
|
|
|
|
|
|
Рекомендуйте покупателям установить мобильное приложение дисконтной системы International Auto Club AUTO CLUB и получайте новых лояльных покупателей.
|
|
|
|
|
|
|
|
|
|
Наш сайт https://www.auto-club.biz
|
|
|
|
|
''';
|
|
|
|
|
|
|
|
|
|
static const String commonGuide = '''
|
|
|
|
|
Для эффективного считывания штрих-кода участника системы лояльности необходимо камеру сканера поднести так, чтобы в неё не попадали вертикальные полосы рамки.
|
|
|
|
|
|
|
|
|
|
Увеличение времени сканирования может произойти из-за черной рамки, в которую помещен штрих-код, так как вертикальные полосы этой рамки расцениваются сканером как часть штрих-кода.
|
|
|
|
|
''';
|
|
|
|
|
}
|
|
|
|
|