add contact
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
import 'package:fcs/fcs/common/localization/app_translations_delegate.dart';
|
||||
import 'package:fcs/fcs/common/localization/transalation.dart';
|
||||
import 'package:fcs/fcs/common/pages/model/language_model.dart';
|
||||
import 'package:fcs/model/buyer_model.dart';
|
||||
import 'package:fcs/model/delivery_model.dart';
|
||||
import 'package:fcs/model/discount_model.dart';
|
||||
@@ -25,7 +28,6 @@ import 'model/device_model.dart';
|
||||
import 'model/do_model.dart';
|
||||
import 'model/employee_model.dart';
|
||||
import 'model/invoice_model.dart';
|
||||
import 'model/language_model.dart';
|
||||
import 'model/log_model.dart';
|
||||
import 'model/main_model.dart';
|
||||
import 'model/pickup_model.dart';
|
||||
@@ -39,8 +41,6 @@ import 'fcs/common/pages/home_page.dart';
|
||||
import 'fcs/common/pages/welcome_page.dart';
|
||||
import 'fcs/common/pages/splash_page.dart';
|
||||
import 'pages/term.dart';
|
||||
import 'widget/localization/app_translations_delegate.dart';
|
||||
import 'widget/localization/transalation.dart';
|
||||
|
||||
class App extends StatefulWidget {
|
||||
@override
|
||||
@@ -92,7 +92,6 @@ class _AppState extends State<App> {
|
||||
mainModel
|
||||
..addModel(userModel)
|
||||
..addModel(employeeModel)
|
||||
..addModel(lanuguageModel)
|
||||
..addModel(storageModel)
|
||||
..addModel(regModel)
|
||||
..addModel(poSubmissionModel)
|
||||
|
||||
@@ -6,7 +6,7 @@ import 'package:provider/provider.dart';
|
||||
import 'package:fcs/charts/qtyby_customer_table.dart';
|
||||
import 'package:fcs/model/chart_model.dart';
|
||||
import 'package:fcs/model/product_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/po.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/chart_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/revenue.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/chart_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/revenue.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/my_data_table.dart';
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/chart_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/revenue.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/chart_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/revenue.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/my_data_table.dart';
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/chart_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/revenue.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/chart_model.dart';
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/revenue.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/my_data_table.dart';
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/do_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/do.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/my_data_table.dart';
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/chart_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/revenue.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'delivery_summary_detail.dart';
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/chart_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/revenue.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/my_data_table.dart';
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/chart_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/po_do_count.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/chart_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/po_do_count.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/my_data_table.dart';
|
||||
|
||||
@@ -6,7 +6,7 @@ import 'package:provider/provider.dart';
|
||||
import 'package:fcs/charts/po_balance_table.dart';
|
||||
import 'package:fcs/model/chart_model.dart';
|
||||
import 'package:fcs/model/product_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/po.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/chart_model.dart';
|
||||
import 'package:fcs/model/language_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/po.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/chart_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/po.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/charts/po_line_detail.dart';
|
||||
import 'package:fcs/model/chart_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/po_do_count.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import 'package:http/http.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/chart_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/po_do_count.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/my_data_table.dart';
|
||||
|
||||
@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/chart_model.dart';
|
||||
import 'package:fcs/model/language_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/po.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
|
||||
@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/chart_model.dart';
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/revenue.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/chart_model.dart';
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/revenue.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/my_data_table.dart';
|
||||
|
||||
@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/model/po_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/po.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/my_data_table.dart';
|
||||
|
||||
@@ -9,7 +9,7 @@ import 'package:fcs/fcs/common/domain/entities/user.dart';
|
||||
import 'package:fcs/fcs/common/domain/exceiptions/signin_exception.dart';
|
||||
import 'package:firebase_auth/firebase_auth.dart';
|
||||
|
||||
import '../../api_helper.dart';
|
||||
import '../../helpers/api_helper.dart';
|
||||
|
||||
class AuthFb {
|
||||
static final AuthFb instance = AuthFb._();
|
||||
|
||||
@@ -14,6 +14,15 @@ List<Day> dayLists = [
|
||||
|
||||
class Setting {
|
||||
final int supportBuildNum;
|
||||
|
||||
// contact page
|
||||
String usaAddress;
|
||||
String mmAddress;
|
||||
String usaContactNumber;
|
||||
String mmContactNumber;
|
||||
String emailAddress;
|
||||
String facebookLink;
|
||||
|
||||
final String okEnergyId;
|
||||
final String about;
|
||||
final String terms;
|
||||
@@ -35,9 +44,7 @@ class Setting {
|
||||
List<String> phones;
|
||||
String deliveryPhone;
|
||||
String address;
|
||||
String email;
|
||||
String website;
|
||||
String facebook;
|
||||
DateTime priceLastUpdate;
|
||||
String bankAccountInfo;
|
||||
List<BankAccount> bankAccounts;
|
||||
@@ -71,6 +78,12 @@ class Setting {
|
||||
|
||||
Setting(
|
||||
{this.supportBuildNum,
|
||||
this.usaAddress,
|
||||
this.mmAddress,
|
||||
this.usaContactNumber,
|
||||
this.mmContactNumber,
|
||||
this.emailAddress,
|
||||
this.facebookLink,
|
||||
this.about,
|
||||
this.okEnergyId,
|
||||
this.terms,
|
||||
@@ -89,9 +102,7 @@ class Setting {
|
||||
this.helpVersion,
|
||||
this.helpURL,
|
||||
this.phones,
|
||||
this.email,
|
||||
this.website,
|
||||
this.facebook,
|
||||
this.priceLastUpdate,
|
||||
this.bankAccountInfo,
|
||||
this.bankAccounts,
|
||||
@@ -110,10 +121,16 @@ class Setting {
|
||||
}
|
||||
|
||||
return Setting(
|
||||
priceLastUpdate: ts?.toDate(),
|
||||
supportBuildNum: map['support_build_number'],
|
||||
usaAddress: map['usa_address'],
|
||||
mmAddress: map['mm_address'],
|
||||
usaContactNumber: map['usa_contact_number'],
|
||||
mmContactNumber: map['mm_contact_number'],
|
||||
emailAddress: map['email_address'],
|
||||
facebookLink: map['facebook_link'],
|
||||
about: map['about'],
|
||||
terms: map['terms'],
|
||||
priceLastUpdate: ts?.toDate(),
|
||||
okEnergyId: map['ok_energy_id'],
|
||||
poExpireInHours: map['po_expire_hours'],
|
||||
doExpireInHours: map['do_expire_hours'],
|
||||
@@ -128,11 +145,9 @@ class Setting {
|
||||
reportURL: map['report_url'],
|
||||
helpVersion: map['help_version'],
|
||||
helpURL: map['help_url'],
|
||||
email: map['email'],
|
||||
deliveryPhone: map['delivery_phone'],
|
||||
address: map['address'],
|
||||
website: map['website'],
|
||||
facebook: map['facebook'],
|
||||
bankAccountInfo: map['bank_account_info'],
|
||||
bankAccounts: bankAccounts);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import 'package:dio/dio.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:fcs/vo/status.dart';
|
||||
|
||||
import '../../config.dart';
|
||||
import '../../../config.dart';
|
||||
|
||||
final log = Logger('requestAPI');
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'dart:io';
|
||||
|
||||
import 'package:connectivity/connectivity.dart';
|
||||
import 'package:fcs/config.dart';
|
||||
import 'package:fcs/fcs/common/api_helper.dart';
|
||||
import 'package:fcs/fcs/common/helpers/api_helper.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
class NetworkConnectivity {
|
||||
72
lib/fcs/common/helpers/shared_pref.dart
Normal file
72
lib/fcs/common/helpers/shared_pref.dart
Normal file
@@ -0,0 +1,72 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:fcs/fcs/common/domain/entities/user.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
|
||||
class SharedPref {
|
||||
static final SharedPref instance = SharedPref._();
|
||||
SharedPref._();
|
||||
|
||||
static Future<String> getLang() async {
|
||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
return prefs.getString('language');
|
||||
}
|
||||
|
||||
static Future<void> saveLang(String lang) async {
|
||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
prefs.setString('language', lang);
|
||||
}
|
||||
|
||||
static Future<void> saveUser(User user) async {
|
||||
await _save("user", user.toJson());
|
||||
}
|
||||
|
||||
static Future<User> getUser() async {
|
||||
try {
|
||||
return User.fromJson(await _read("user"));
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
static Future<User> removeUser() async {
|
||||
return await _remove("user");
|
||||
}
|
||||
|
||||
static Future<void> saveSkippedRecoverEmail(bool skipped) async {
|
||||
await _save("skipped_recovery_email", skipped);
|
||||
}
|
||||
|
||||
static Future<bool> getSkippedRecoverEmail() async {
|
||||
try {
|
||||
bool _skipped = await _read("skipped_recovery_email");
|
||||
return _skipped;
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
static _read(String key) async {
|
||||
try {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
return json.decode(prefs.getString(key));
|
||||
} catch (e) {
|
||||
print("Error:$e");
|
||||
}
|
||||
}
|
||||
|
||||
static _save(String key, value) async {
|
||||
try {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
prefs.setString(key, json.encode(value));
|
||||
} catch (e) {
|
||||
print("Error:$e");
|
||||
}
|
||||
}
|
||||
|
||||
static _remove(String key) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
prefs.remove(key);
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,7 @@ const TextStyle welcomeLabelStyle =
|
||||
const TextStyle welcomeSubLabelStyle =
|
||||
TextStyle(fontSize: 18, color: primaryColor, fontWeight: FontWeight.w500);
|
||||
const TextStyle subMenuStyle =
|
||||
TextStyle(fontSize: 11, color: Colors.white, fontWeight: FontWeight.w500);
|
||||
TextStyle(fontSize: 14, color: Colors.white, fontWeight: FontWeight.w500);
|
||||
const TextStyle siginButtonStyle =
|
||||
TextStyle(fontSize: 16, color: Colors.white, fontWeight: FontWeight.w500);
|
||||
|
||||
42
lib/fcs/common/localization/app_translations.dart
Normal file
42
lib/fcs/common/localization/app_translations.dart
Normal file
@@ -0,0 +1,42 @@
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart' show rootBundle;
|
||||
|
||||
class AppTranslations {
|
||||
Locale locale;
|
||||
static Map<dynamic, dynamic> _localisedValues;
|
||||
|
||||
AppTranslations(Locale locale) {
|
||||
this.locale = locale;
|
||||
}
|
||||
|
||||
static AppTranslations of(BuildContext context) {
|
||||
return Localizations.of<AppTranslations>(context, AppTranslations);
|
||||
}
|
||||
|
||||
static Future<AppTranslations> load(Locale locale) async {
|
||||
AppTranslations appTranslations = AppTranslations(locale);
|
||||
String jsonContent = await rootBundle
|
||||
.loadString("assets/local/localization_${locale.languageCode}.json");
|
||||
_localisedValues = json.decode(jsonContent);
|
||||
return appTranslations;
|
||||
}
|
||||
|
||||
get currentLanguage => locale.languageCode;
|
||||
|
||||
String text(String key, {List<String> translationVariables}) {
|
||||
String value = _localisedValues[key];
|
||||
if (value == null) {
|
||||
return "$key not found";
|
||||
}
|
||||
if (translationVariables != null) {
|
||||
translationVariables.asMap().forEach((i, s) {
|
||||
value = value.replaceAll("{$i}", s);
|
||||
});
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
25
lib/fcs/common/localization/app_translations_delegate.dart
Normal file
25
lib/fcs/common/localization/app_translations_delegate.dart
Normal file
@@ -0,0 +1,25 @@
|
||||
import 'dart:async';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'app_translations.dart';
|
||||
import 'transalation.dart';
|
||||
|
||||
class AppTranslationsDelegate extends LocalizationsDelegate<AppTranslations> {
|
||||
final Locale newLocale;
|
||||
|
||||
const AppTranslationsDelegate({this.newLocale});
|
||||
|
||||
@override
|
||||
bool isSupported(Locale locale) {
|
||||
return Translation().supportedLanguagesCodes.contains(locale.languageCode);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<AppTranslations> load(Locale locale) {
|
||||
return AppTranslations.load(newLocale ?? locale);
|
||||
}
|
||||
|
||||
@override
|
||||
bool shouldReload(LocalizationsDelegate<AppTranslations> old) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
27
lib/fcs/common/localization/transalation.dart
Normal file
27
lib/fcs/common/localization/transalation.dart
Normal file
@@ -0,0 +1,27 @@
|
||||
import 'dart:ui';
|
||||
|
||||
typedef void LocaleChangeCallback(Locale locale);
|
||||
|
||||
class Translation {
|
||||
static final Translation _translation = Translation._internal();
|
||||
|
||||
factory Translation() {
|
||||
return _translation;
|
||||
}
|
||||
|
||||
Translation._internal();
|
||||
|
||||
final List<String> supportedLanguages = [
|
||||
"English",
|
||||
"မြန်မာ ",
|
||||
];
|
||||
|
||||
final List<String> supportedLanguagesCodes = ["en", "mu"];
|
||||
|
||||
//returns the list of supported Locales
|
||||
Iterable<Locale> supportedLocales() =>
|
||||
supportedLanguagesCodes.map<Locale>((language) => Locale(language, ""));
|
||||
|
||||
//function to be invoked when changing the language
|
||||
LocaleChangeCallback onLocaleChanged;
|
||||
}
|
||||
150
lib/fcs/common/pages/contact.dart
Normal file
150
lib/fcs/common/pages/contact.dart
Normal file
@@ -0,0 +1,150 @@
|
||||
import 'package:fcs/fcs/common/domain/entities/setting.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/fcs/common/pages/model/main_model.dart';
|
||||
import 'package:fcs/fcs/common/pages/widgets/local_text.dart';
|
||||
import 'package:fcs/fcs/common/pages/widgets/progress.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||
import 'package:package_info/package_info.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
|
||||
class Contact extends StatefulWidget {
|
||||
@override
|
||||
_ContactState createState() => _ContactState();
|
||||
}
|
||||
|
||||
class _ContactState extends State<Contact> {
|
||||
bool _isLoading = false;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
Setting setting = Provider.of<MainModel>(context).setting;
|
||||
|
||||
return LocalProgress(
|
||||
inAsyncCall: _isLoading,
|
||||
child: Scaffold(
|
||||
appBar: AppBar(
|
||||
backgroundColor: primaryColor,
|
||||
elevation: 0,
|
||||
centerTitle: true,
|
||||
leading: new IconButton(
|
||||
icon: new Icon(Icons.close),
|
||||
onPressed: () => Navigator.of(context).pop(),
|
||||
),
|
||||
title: LocalText(
|
||||
context,
|
||||
"contact",
|
||||
fontSize: 25,
|
||||
color: Colors.white,
|
||||
),
|
||||
),
|
||||
body: ListView(
|
||||
children: <Widget>[
|
||||
link(setting.usaContactNumber, Icons.phone_forwarded,
|
||||
onTap: () => _call(setting.usaContactNumber),
|
||||
label: LocalText(
|
||||
context,
|
||||
"contact.usa.phone",
|
||||
color: primaryColor,
|
||||
)),
|
||||
link(setting.mmContactNumber, Icons.phone_forwarded,
|
||||
onTap: () => _call(
|
||||
setting.mmContactNumber,
|
||||
),
|
||||
label: LocalText(
|
||||
context,
|
||||
"contact.mm.phone",
|
||||
color: primaryColor,
|
||||
)),
|
||||
link(
|
||||
setting.usaAddress,
|
||||
Icons.location_on,
|
||||
),
|
||||
link(setting.mmAddress, Icons.location_on),
|
||||
link(setting.emailAddress, Icons.email,
|
||||
onTap: () => _email(setting.emailAddress)),
|
||||
link(setting.facebookLink, FontAwesomeIcons.facebook,
|
||||
onTap: () => _openLink(setting.facebookLink)),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget link(String text, IconData iconData,
|
||||
{Function() onTap, Widget label}) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.only(left: 18.0, bottom: 5),
|
||||
child: InkWell(
|
||||
onTap: () => onTap != null ? onTap() : null,
|
||||
child: SingleChildScrollView(
|
||||
scrollDirection: Axis.horizontal,
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Icon(
|
||||
iconData,
|
||||
),
|
||||
),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
label == null
|
||||
? Container()
|
||||
: Padding(
|
||||
padding: EdgeInsets.fromLTRB(10, 10, 10, 0),
|
||||
child: label,
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Text(
|
||||
text == null ? "" : text,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
maxLines: 5,
|
||||
style: TextStyle(fontSize: 14.0),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
width: 5,
|
||||
),
|
||||
onTap == null
|
||||
? Container()
|
||||
: Icon(
|
||||
Icons.open_in_new,
|
||||
color: Colors.grey,
|
||||
size: 15,
|
||||
)
|
||||
],
|
||||
),
|
||||
)),
|
||||
);
|
||||
}
|
||||
|
||||
Future<String> getVersionNumber() async {
|
||||
PackageInfo packageInfo = await PackageInfo.fromPlatform();
|
||||
String version = packageInfo.version + "+" + packageInfo.buildNumber;
|
||||
return version;
|
||||
}
|
||||
|
||||
_call(String phone) {
|
||||
showConfirmDialog(
|
||||
context, "contact.phone.confim", () => launch("tel:$phone"),
|
||||
translationVariables: ["$phone"]);
|
||||
}
|
||||
|
||||
_email(String email) {
|
||||
showConfirmDialog(
|
||||
context, "contact.email.configm", () => launch("mailto:$email"),
|
||||
translationVariables: ["$email"]);
|
||||
}
|
||||
|
||||
_openLink(String link) {
|
||||
showConfirmDialog(context, "contact.open.confrim", () => launch("$link"),
|
||||
translationVariables: ["$link"]);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
import 'package:fcs/fcs/common/localization/transalation.dart';
|
||||
import 'package:fcs/fcs/common/pages/model/language_model.dart';
|
||||
import 'package:fcs/fcs/common/pages/model/main_model.dart';
|
||||
import 'package:fcs/model/language_model.dart';
|
||||
import 'package:fcs/pages/contact.dart';
|
||||
import 'package:fcs/fcs/common/pages/widgets/action_button.dart';
|
||||
import 'package:fcs/fcs/common/pages/widgets/bottom_widgets.dart';
|
||||
import 'package:fcs/pages/discount_list.dart';
|
||||
import 'package:fcs/pages/notification_list.dart';
|
||||
import 'package:fcs/pages/payment_method_page.dart';
|
||||
@@ -11,8 +13,6 @@ import 'package:fcs/pages_fcs/delivery_list.dart';
|
||||
import 'package:fcs/pages_fcs/package_list.dart';
|
||||
import 'package:fcs/widget/banner.dart';
|
||||
import 'package:fcs/widget/bottom_up_page_route.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:fcs/widget/localization/transalation.dart';
|
||||
import 'package:fcs/widget/offline_redirect.dart';
|
||||
import 'package:fcs/widget/right_left_page_route%20copy.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
@@ -30,7 +30,7 @@ import '../../../pages/invoice/invoce_list.dart';
|
||||
import '../../../pages/pickup_list.dart';
|
||||
import '../../../pages/shipment_rates.dart';
|
||||
import '../../../pages/staff_list.dart';
|
||||
import '../theme.dart';
|
||||
import '../helpers/theme.dart';
|
||||
import 'profile_page.dart';
|
||||
import 'signin/signin_page.dart';
|
||||
|
||||
@@ -41,12 +41,11 @@ class HomePage extends StatefulWidget {
|
||||
_HomePageState createState() => _HomePageState();
|
||||
}
|
||||
|
||||
typedef BtnCallback();
|
||||
|
||||
class _HomePageState extends State<HomePage> {
|
||||
final log = Logger('_HomePageState');
|
||||
bool login = false;
|
||||
bool customer = true;
|
||||
List<bool> isSelected = [true, false];
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -67,41 +66,41 @@ class _HomePageState extends State<HomePage> {
|
||||
final numberFormatter = new NumberFormat("#,###");
|
||||
|
||||
String pin;
|
||||
List<bool> isSelected = [true, false];
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
login = Provider.of<MainModel>(context).isLogin();
|
||||
var owner = Provider.of<MainModel>(context).isOwner();
|
||||
var customer = Provider.of<MainModel>(context).isCustomer();
|
||||
LanguageModel languageModel = Provider.of<LanguageModel>(context);
|
||||
|
||||
final packagesBtn = _buildBtn2("package.name",
|
||||
final packagesBtn = _buildBtn("package.name",
|
||||
icon: Octicons.package,
|
||||
btnCallback: () =>
|
||||
Navigator.of(context).push(BottomUpPageRoute(PackageList())));
|
||||
|
||||
final boxesBtn = _buildBtn2("boxes.name",
|
||||
final boxesBtn = _buildBtn("boxes.name",
|
||||
icon: MaterialCommunityIcons.package,
|
||||
btnCallback: () =>
|
||||
Navigator.of(context).push(BottomUpPageRoute(BoxList())));
|
||||
|
||||
final pickUpBtn = _buildBtn2("pickup",
|
||||
final pickUpBtn = _buildBtn("pickup",
|
||||
icon: SimpleLineIcons.direction,
|
||||
btnCallback: () =>
|
||||
Navigator.of(context).push(BottomUpPageRoute(PickUpList())));
|
||||
|
||||
final shipmentCostBtn = _buildBtn2("rate",
|
||||
final shipmentCostBtn = _buildBtn("rate",
|
||||
icon: FontAwesomeIcons.calculator,
|
||||
btnCallback: () =>
|
||||
Navigator.of(context).push(BottomUpPageRoute(ShipmentRates())));
|
||||
|
||||
final fcsProfileBtn = _buildBtn2("fcs.btn",
|
||||
final fcsProfileBtn = _buildBtn("fcs.btn",
|
||||
// imgIcon: Image.asset("assets/logo_btn.png", height: 25,color:Colors.white),
|
||||
icon: MaterialCommunityIcons.home_city,
|
||||
btnCallback: () =>
|
||||
Navigator.of(context).push(BottomUpPageRoute(FCSProfilePage())));
|
||||
|
||||
final shipmentBtn = _buildBtn2("shipment.title",
|
||||
final shipmentBtn = _buildBtn("shipment.title",
|
||||
icon: Ionicons.ios_airplane,
|
||||
imgIcon: Image.asset(
|
||||
"assets/truck.png",
|
||||
@@ -112,7 +111,7 @@ class _HomePageState extends State<HomePage> {
|
||||
btnCallback: () =>
|
||||
Navigator.of(context).push(BottomUpPageRoute(ShipmentList())));
|
||||
|
||||
final buyingBtn = _buildBtn2("buy_online",
|
||||
final buyingBtn = _buildBtn("buy_online",
|
||||
icon: MaterialCommunityIcons.cart_outline, btnCallback: () {
|
||||
Navigator.push(context, BottomUpPageRoute(BuyingOnlinePage())
|
||||
// MaterialPageRoute(builder: (context) => BuyingOnlinePage()),
|
||||
@@ -120,43 +119,43 @@ class _HomePageState extends State<HomePage> {
|
||||
});
|
||||
|
||||
final notiBtn =
|
||||
_buildBtn2("message.btn", icon: Icons.message, btnCallback: () {
|
||||
_buildBtn("message.btn", icon: Icons.message, btnCallback: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
BottomUpPageRoute(NotificationList()),
|
||||
);
|
||||
});
|
||||
|
||||
final staffBtn = _buildBtn2("staff.title",
|
||||
final staffBtn = _buildBtn("staff.title",
|
||||
icon: MaterialCommunityIcons.worker,
|
||||
btnCallback: () =>
|
||||
Navigator.of(context).push(BottomUpPageRoute(StaffList())));
|
||||
|
||||
final customersBtn = _buildBtn2("customers.btn",
|
||||
final customersBtn = _buildBtn("customers.btn",
|
||||
icon: Feather.users,
|
||||
btnCallback: () =>
|
||||
Navigator.of(context).push(BottomUpPageRoute(CustomerList())));
|
||||
|
||||
final invoicesBtn = _buildBtn2("invoices.btn",
|
||||
final invoicesBtn = _buildBtn("invoices.btn",
|
||||
icon: FontAwesomeIcons.fileInvoice,
|
||||
btnCallback: () =>
|
||||
Navigator.of(context).push(BottomUpPageRoute(InvoiceList())));
|
||||
|
||||
final paymentMethodBtn = _buildBtn2("payment.method.btn",
|
||||
final paymentMethodBtn = _buildBtn("payment.method.btn",
|
||||
icon: FontAwesomeIcons.creditCard,
|
||||
btnCallback: () =>
|
||||
Navigator.of(context).push(BottomUpPageRoute(PaymentMethodPage())));
|
||||
|
||||
final discountBtn = _buildBtn2("discount.btn",
|
||||
final discountBtn = _buildBtn("discount.btn",
|
||||
icon: Entypo.price_ribbon,
|
||||
btnCallback: () =>
|
||||
Navigator.of(context).push(BottomUpPageRoute(DiscountList())));
|
||||
|
||||
final termBtn = _buildBtn2("term.btn",
|
||||
final termBtn = _buildBtn("term.btn",
|
||||
icon: FontAwesomeIcons.info,
|
||||
btnCallback: () =>
|
||||
Navigator.of(context).push(BottomUpPageRoute(Term())));
|
||||
final deliveryBtn = _buildBtn2("delivery.title",
|
||||
final deliveryBtn = _buildBtn("delivery.title",
|
||||
icon: MaterialCommunityIcons.truck_fast,
|
||||
btnCallback: () =>
|
||||
Navigator.of(context).push(BottomUpPageRoute(DeliverList())));
|
||||
@@ -206,7 +205,7 @@ class _HomePageState extends State<HomePage> {
|
||||
)
|
||||
],
|
||||
onPressed: _langChange,
|
||||
isSelected: isSelected,
|
||||
isSelected: languageModel.currentState,
|
||||
),
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
@@ -234,7 +233,7 @@ class _HomePageState extends State<HomePage> {
|
||||
)
|
||||
],
|
||||
onPressed: _langChange,
|
||||
isSelected: isSelected,
|
||||
isSelected: languageModel.currentState,
|
||||
),
|
||||
FlatButton(
|
||||
onPressed: () {
|
||||
@@ -288,42 +287,14 @@ class _HomePageState extends State<HomePage> {
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(top: 8.0),
|
||||
child: ListView(children: [
|
||||
Wrap(
|
||||
alignment: WrapAlignment.center,
|
||||
children: widgets,
|
||||
),
|
||||
]),
|
||||
),
|
||||
child: ListView(children: [
|
||||
Wrap(
|
||||
alignment: WrapAlignment.center,
|
||||
children: widgets,
|
||||
),
|
||||
]),
|
||||
),
|
||||
Container(
|
||||
height: 80,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
// _buildSmallButton(
|
||||
// "Policies", FontAwesomeIcons.fileContract),
|
||||
InkWell(
|
||||
onTap: () {
|
||||
Navigator.of(context)
|
||||
.push(BottomUpPageRoute(Contact()));
|
||||
},
|
||||
child: _buildSmallButton(
|
||||
"Contact Us", SimpleLineIcons.support),
|
||||
),
|
||||
InkWell(
|
||||
onTap: () {
|
||||
Navigator.of(context)
|
||||
.push(BottomUpPageRoute(Term()));
|
||||
},
|
||||
child: _buildSmallButton(
|
||||
"Terms of service", Icons.info_outline),
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
BottomWidgets(),
|
||||
],
|
||||
))),
|
||||
),
|
||||
@@ -331,7 +302,7 @@ class _HomePageState extends State<HomePage> {
|
||||
}
|
||||
|
||||
_langChange(index) {
|
||||
var languageModel = Provider.of<LanguageModel>(context);
|
||||
var languageModel = Provider.of<LanguageModel>(context,listen: false);
|
||||
languageModel.saveLanguage(Translation().supportedLanguages[index]);
|
||||
setState(() {
|
||||
isSelected.asMap().forEach((i, e) {
|
||||
@@ -341,143 +312,8 @@ class _HomePageState extends State<HomePage> {
|
||||
});
|
||||
}
|
||||
|
||||
Widget _buildTile(Widget child, {Function() onTap}) {
|
||||
return Material(
|
||||
elevation: 0,
|
||||
borderRadius: BorderRadius.circular(12.0),
|
||||
// shadowColor: Colors.transparent,
|
||||
color: Colors.transparent,
|
||||
child: InkWell(
|
||||
onTap: onTap != null
|
||||
? () => onTap()
|
||||
: () {
|
||||
log.info('Not set yet');
|
||||
},
|
||||
child: child));
|
||||
}
|
||||
|
||||
Widget _buildBtn(String title,
|
||||
{Image imgIcon, IconData icon, BtnCallback btnCallback}) {
|
||||
var languageModel = Provider.of<LanguageModel>(context);
|
||||
return _buildTile(
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(5.0),
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
icon != null
|
||||
? Material(
|
||||
child: Padding(
|
||||
padding: EdgeInsets.only(top: 10),
|
||||
child: Icon(icon, color: primaryColor, size: 35.0)))
|
||||
: Container(
|
||||
padding: EdgeInsets.only(top: 3),
|
||||
child: imgIcon,
|
||||
),
|
||||
Padding(padding: EdgeInsets.only(bottom: 10.0)),
|
||||
Text(AppTranslations.of(context).text(title),
|
||||
style: languageModel.isEng
|
||||
? TextStyle(
|
||||
color: Colors.black,
|
||||
fontWeight: FontWeight.w700,
|
||||
fontSize: 12.0)
|
||||
: TextStyle(
|
||||
color: Colors.black,
|
||||
fontWeight: FontWeight.w700,
|
||||
fontSize: 12.0,
|
||||
fontFamily: "MyanmarUnicode")),
|
||||
]),
|
||||
),
|
||||
onTap: btnCallback,
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildBtn2(String title,
|
||||
{Image imgIcon, IconData icon, BtnCallback btnCallback}) {
|
||||
var languageModel = Provider.of<LanguageModel>(context);
|
||||
return Container(
|
||||
width: 100,
|
||||
height: 100,
|
||||
decoration: new BoxDecoration(
|
||||
color: Colors.transparent, //new Color.fromRGBO(255, 0, 0, 0.0),
|
||||
borderRadius: new BorderRadius.only(
|
||||
topLeft: const Radius.circular(40.0),
|
||||
topRight: const Radius.circular(40.0))),
|
||||
// color: Colors.transparent,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(5.0),
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
// Padding(
|
||||
// padding: EdgeInsets.only(top: 10),
|
||||
// child: Icon(icon, color: Colors.white, size: 35.0)),
|
||||
// Padding(padding: EdgeInsets.only(bottom: 10.0)),
|
||||
ClipOval(
|
||||
child: Material(
|
||||
color: Colors.black54, // button color
|
||||
child: InkWell(
|
||||
splashColor: primaryColor, // inkwell color
|
||||
child: SizedBox(
|
||||
width: 60,
|
||||
height: 60,
|
||||
child: icon == null
|
||||
? Container(width: 10, height: 10, child: imgIcon)
|
||||
: Icon(icon, color: Colors.white, size: 30)),
|
||||
onTap: btnCallback,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
Container(
|
||||
height: 30,
|
||||
child: FittedBox(
|
||||
fit: BoxFit.fitWidth,
|
||||
child: Text(AppTranslations.of(context).text(title),
|
||||
style: languageModel.isEng
|
||||
? TextStyle(
|
||||
color: Colors.white,
|
||||
fontWeight: FontWeight.w500,
|
||||
fontSize: 14.0,
|
||||
fontFamily: "Roboto")
|
||||
: TextStyle(
|
||||
color: Colors.white,
|
||||
fontWeight: FontWeight.w700,
|
||||
fontSize: 12.0,
|
||||
fontFamily: "MyanmarUnicode")),
|
||||
),
|
||||
),
|
||||
]),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildSmallButton(String text, IconData iconData) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.all(18.0),
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
IconButton(
|
||||
icon: Icon(iconData, color: Colors.white70),
|
||||
color: Colors.white70,
|
||||
onPressed: null),
|
||||
// RaisedButton(onPressed: ()=>{},child: Row(
|
||||
// children: <Widget>[
|
||||
// IconButton(
|
||||
// icon: Icon(iconData, ),
|
||||
// onPressed: null),
|
||||
// Text(text),
|
||||
// ],
|
||||
// ),color: Colors.transparent,
|
||||
// focusColor: Colors.transparent,),
|
||||
Text(
|
||||
text,
|
||||
style: subMenuStyle,
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
return ActionButton(title: title,imgIcon: imgIcon,icon:icon,btnCallback: btnCallback);
|
||||
}
|
||||
}
|
||||
|
||||
35
lib/fcs/common/pages/model/base_model.dart
Normal file
35
lib/fcs/common/pages/model/base_model.dart
Normal file
@@ -0,0 +1,35 @@
|
||||
import 'package:fcs/fcs/common/domain/entities/setting.dart';
|
||||
import 'package:fcs/fcs/common/domain/entities/user.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:fcs/fcs/common/helpers/api_helper.dart';
|
||||
|
||||
import 'main_model.dart';
|
||||
|
||||
abstract class BaseModel extends ChangeNotifier {
|
||||
User user;
|
||||
Setting setting;
|
||||
MainModel mainModel;
|
||||
|
||||
void initUser(User user) async {
|
||||
this.user = user;
|
||||
}
|
||||
|
||||
void initSetting(Setting setting) async {
|
||||
this.setting = setting;
|
||||
}
|
||||
|
||||
void logout();
|
||||
|
||||
// request makes http request
|
||||
// if token is null
|
||||
dynamic request(
|
||||
String path,
|
||||
method, {
|
||||
dynamic payload,
|
||||
String token,
|
||||
String url,
|
||||
}) async {
|
||||
return await requestAPI(path, method,
|
||||
payload: payload, token: token, url: url);
|
||||
}
|
||||
}
|
||||
46
lib/fcs/common/pages/model/language_model.dart
Normal file
46
lib/fcs/common/pages/model/language_model.dart
Normal file
@@ -0,0 +1,46 @@
|
||||
import 'package:fcs/fcs/common/localization/transalation.dart';
|
||||
import 'package:fcs/fcs/common/helpers/shared_pref.dart';
|
||||
import 'package:flutter/painting.dart';
|
||||
|
||||
import 'base_model.dart';
|
||||
|
||||
class LanguageModel extends BaseModel {
|
||||
String language;
|
||||
bool get isEng => this.language == "English";
|
||||
List<bool> get currentState => isEng ? [true, false] : [false, true];
|
||||
|
||||
static final List<String> languageCodesList =
|
||||
Translation().supportedLanguagesCodes;
|
||||
static final List<String> languagesList = Translation().supportedLanguages;
|
||||
|
||||
final Map<dynamic, dynamic> languagesMap = {
|
||||
languagesList[0]: languageCodesList[0],
|
||||
languagesList[1]: languageCodesList[1],
|
||||
};
|
||||
LanguageModel() {
|
||||
load();
|
||||
}
|
||||
@override
|
||||
logout() async {}
|
||||
|
||||
Future<String> load() async {
|
||||
var data = await SharedPref.getLang();
|
||||
String result = languagesList[1]; // defalut to english
|
||||
if (data != null) {
|
||||
result = data;
|
||||
}
|
||||
this.language = result;
|
||||
Translation().onLocaleChanged(Locale(languagesMap[this.language]));
|
||||
print("lang=====$result");
|
||||
notifyListeners();
|
||||
return result;
|
||||
}
|
||||
|
||||
void saveLanguage(String language) async {
|
||||
Translation().onLocaleChanged(Locale(languagesMap[language]));
|
||||
|
||||
SharedPref.saveLang(language);
|
||||
this.language = language;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@ import 'package:fcs/fcs/common/domain/entities/auth_result.dart';
|
||||
import 'package:fcs/fcs/common/domain/entities/auth_status.dart';
|
||||
import 'package:fcs/fcs/common/domain/entities/setting.dart';
|
||||
import 'package:fcs/fcs/common/domain/entities/user.dart';
|
||||
import 'package:fcs/fcs/common/network_connectivity.dart';
|
||||
import 'package:fcs/fcs/common/helpers/network_connectivity.dart';
|
||||
import 'package:fcs/fcs/common/services/services.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
import 'package:fcs/fcs/common/localization/app_translations.dart';
|
||||
import 'package:fcs/fcs/common/localization/transalation.dart';
|
||||
import 'package:fcs/fcs/common/pages/model/language_model.dart';
|
||||
import 'package:fcs/fcs/common/pages/model/main_model.dart';
|
||||
import 'package:fcs/model/language_model.dart';
|
||||
import 'package:fcs/fcs/common/pages/widgets/progress.dart';
|
||||
import 'package:fcs/model/shipment_model.dart';
|
||||
import 'package:fcs/model/user_model.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/pages_fcs/shipping_address_row.dart';
|
||||
import 'package:fcs/vo/role.dart';
|
||||
import 'package:fcs/vo/shipping_address.dart';
|
||||
import 'package:fcs/widget/bottom_up_page_route.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:fcs/widget/localization/transalation.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../../../pages/shipping_address_editor.dart';
|
||||
import '../theme.dart';
|
||||
import '../helpers/theme.dart';
|
||||
|
||||
typedef void ProfileCallback();
|
||||
|
||||
|
||||
@@ -4,14 +4,14 @@ import 'package:fcs/fcs/common/domain/entities/auth_result.dart';
|
||||
import 'package:fcs/fcs/common/domain/entities/auth_status.dart';
|
||||
import 'package:fcs/fcs/common/domain/entities/user.dart';
|
||||
import 'package:fcs/fcs/common/pages/model/main_model.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/widget/bottom_up_page_route.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:pin_input_text_field/pin_input_text_field.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import 'signup_page.dart';
|
||||
import '../../theme.dart';
|
||||
import '../../helpers/theme.dart';
|
||||
import '../../../../widget/local_text.dart';
|
||||
import '../../../../widget/progress.dart';
|
||||
|
||||
|
||||
@@ -8,11 +8,11 @@ import 'package:flutter/services.dart';
|
||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../../theme.dart';
|
||||
import '../../helpers/theme.dart';
|
||||
import '../../../../widget/local_text.dart';
|
||||
import '../../../../widget/progress.dart';
|
||||
import 'code_page.dart';
|
||||
import '../../../../pages/util.dart';
|
||||
import '../util.dart';
|
||||
|
||||
class SigninPage extends StatefulWidget {
|
||||
@override
|
||||
|
||||
@@ -6,7 +6,7 @@ import 'package:provider/provider.dart';
|
||||
|
||||
import '../../../../widget/local_text.dart';
|
||||
import '../../../../widget/progress.dart';
|
||||
import '../../theme.dart';
|
||||
import '../../helpers/theme.dart';
|
||||
|
||||
class SignupPage extends StatefulWidget {
|
||||
@override
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:fcs/fcs/common/pages/model/main_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
173
lib/fcs/common/pages/term.dart
Normal file
173
lib/fcs/common/pages/term.dart
Normal file
@@ -0,0 +1,173 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:fcs/fcs/common/pages/model/main_model.dart';
|
||||
import 'package:fcs/fcs/common/pages/term_edit.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/fcs/common/pages/widgets/local_text.dart';
|
||||
import 'package:fcs/fcs/common/pages/widgets/progress.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:zefyr/zefyr.dart';
|
||||
|
||||
|
||||
typedef void ProfileCallback();
|
||||
|
||||
class Term extends StatefulWidget {
|
||||
final bool agreePage;
|
||||
|
||||
const Term({Key key, this.agreePage = false}) : super(key: key);
|
||||
@override
|
||||
_TermState createState() => _TermState();
|
||||
}
|
||||
|
||||
class _TermState extends State<Term> {
|
||||
ZefyrController _controller;
|
||||
FocusNode _focusNode;
|
||||
NotusDocument document = new NotusDocument();
|
||||
bool isLoading = false;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_controller = ZefyrController(_loadDocument());
|
||||
print("controller terms => ${_controller.document}");
|
||||
_focusNode = FocusNode();
|
||||
}
|
||||
|
||||
NotusDocument _loadDocument() {
|
||||
MainModel mainModel = Provider.of<MainModel>(context, listen: false);
|
||||
String term = mainModel.setting.terms;
|
||||
print("terms => $term");
|
||||
NotusDocument doc;
|
||||
try {
|
||||
doc = NotusDocument.fromJson(jsonDecode(term));
|
||||
print('doc=> $doc');
|
||||
} catch (e) {}
|
||||
if (doc == null) {
|
||||
doc = NotusDocument();
|
||||
}
|
||||
return doc;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
MainModel mainModel = Provider.of<MainModel>(context);
|
||||
|
||||
bool isOwnerAndAbove =
|
||||
mainModel.user != null && mainModel.user.isOwnerAndAbove();
|
||||
bool hasAdmin = mainModel.user != null && mainModel.user.hasAdmin();
|
||||
|
||||
// bool aggreed = mainModel.user.agreeTerms;
|
||||
bool aggreed = true;
|
||||
|
||||
final agreeBtn = Padding(
|
||||
padding: EdgeInsets.symmetric(vertical: 10.0),
|
||||
child: Card(
|
||||
elevation: 10,
|
||||
child: Container(
|
||||
height: 45.0,
|
||||
child: ButtonTheme(
|
||||
minWidth: 900.0,
|
||||
height: 100.0,
|
||||
child: FlatButton.icon(
|
||||
onPressed: () {
|
||||
showConfirmDialog(context, "term.iagree", () async {
|
||||
_agree();
|
||||
});
|
||||
},
|
||||
label: LocalText(context, "term.agree_btn"),
|
||||
icon: Icon(
|
||||
Icons.check,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
));
|
||||
|
||||
return LocalProgress(
|
||||
inAsyncCall: isLoading,
|
||||
child: Scaffold(
|
||||
appBar: AppBar(
|
||||
centerTitle: true,
|
||||
leading: new IconButton(
|
||||
icon: new Icon(Icons.close),
|
||||
onPressed: () => Navigator.of(context).pop(),
|
||||
),
|
||||
// automaticallyImplyLeading: !widget.agreePage,
|
||||
title: LocalText(context, 'term', color: Colors.white, fontSize: 20),
|
||||
backgroundColor: primaryColor,
|
||||
actions: <Widget>[
|
||||
// isOwnerAndAbove || hasAdmin
|
||||
// ?
|
||||
IconButton(
|
||||
icon: Icon(Icons.edit),
|
||||
onPressed: () async {
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) => TermEdit((data) {
|
||||
setState(() {
|
||||
_controller = ZefyrController(data);
|
||||
});
|
||||
})),
|
||||
);
|
||||
// print('doc=> $doc');
|
||||
|
||||
// setState(() {
|
||||
// document = doc;
|
||||
// });
|
||||
// var document = await
|
||||
// Navigator.push(
|
||||
// context,
|
||||
// MaterialPageRoute(builder: (context) => TermEdit()),
|
||||
// );
|
||||
},
|
||||
)
|
||||
// : Container()
|
||||
],
|
||||
),
|
||||
body: Column(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Card(
|
||||
child: ZefyrTheme(
|
||||
data: ZefyrThemeData().copyWith(),
|
||||
child: ZefyrScaffold(
|
||||
child: ZefyrEditor(
|
||||
mode: ZefyrMode.view,
|
||||
padding: EdgeInsets.all(16),
|
||||
controller: _controller,
|
||||
focusNode: _focusNode,
|
||||
),
|
||||
))),
|
||||
)),
|
||||
!aggreed ? agreeBtn : Container(),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
_agree() async {
|
||||
setState(() {
|
||||
isLoading = true;
|
||||
});
|
||||
try {
|
||||
// MainModel mainModel = Provider.of<MainModel>(context);
|
||||
// await mainModel.agreeTerms();
|
||||
// if (widget.agreePage) {
|
||||
// Future.delayed(const Duration(milliseconds: 3000), () {
|
||||
// Navigator.pop(context);
|
||||
// });
|
||||
// }
|
||||
} catch (e) {
|
||||
showMsgDialog(context, "Error", e.toString());
|
||||
setState(() {
|
||||
isLoading = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
125
lib/fcs/common/pages/term_edit.dart
Normal file
125
lib/fcs/common/pages/term_edit.dart
Normal file
@@ -0,0 +1,125 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:zefyr/zefyr.dart';
|
||||
|
||||
|
||||
typedef void ProfileCallback();
|
||||
|
||||
class TermEdit extends StatefulWidget {
|
||||
final ValueChanged onChangedData;
|
||||
TermEdit(this.onChangedData);
|
||||
@override
|
||||
_TermEditState createState() => _TermEditState();
|
||||
}
|
||||
|
||||
class _TermEditState extends State<TermEdit> {
|
||||
/// Allows to control the editor and the document.
|
||||
ZefyrController _controller;
|
||||
|
||||
/// Zefyr editor like any other input field requires a focus node.
|
||||
FocusNode _focusNode;
|
||||
bool _isLoading;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_isLoading = false;
|
||||
|
||||
// Here we must load the document and pass it to Zefyr controller.
|
||||
final document = _loadDocument();
|
||||
_controller = ZefyrController(document);
|
||||
_focusNode = FocusNode();
|
||||
}
|
||||
|
||||
/// Loads the document to be edited in Zefyr.
|
||||
NotusDocument _loadDocument() {
|
||||
MainModel mainModel = Provider.of<MainModel>(context, listen: false);
|
||||
String term = mainModel.setting.terms;
|
||||
|
||||
NotusDocument doc;
|
||||
try {
|
||||
doc = NotusDocument.fromJson(jsonDecode(term));
|
||||
} catch (e) {}
|
||||
if (doc == null) {
|
||||
doc = NotusDocument();
|
||||
}
|
||||
return doc;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
MainModel mainModel = Provider.of<MainModel>(context);
|
||||
|
||||
var singleChildScrollView = SingleChildScrollView(
|
||||
padding: EdgeInsets.only(
|
||||
left: 25.0,
|
||||
right: 25.0,
|
||||
),
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
Container(
|
||||
width: 300,
|
||||
height: 300,
|
||||
child: Card(child: Markdown(data: mainModel.setting.terms))),
|
||||
],
|
||||
),
|
||||
);
|
||||
|
||||
return LocalProgress(
|
||||
inAsyncCall: _isLoading,
|
||||
child: Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text(
|
||||
"Terms",
|
||||
),
|
||||
backgroundColor: primaryColor,
|
||||
actions: <Widget>[
|
||||
IconButton(
|
||||
icon: Icon(Icons.save),
|
||||
onPressed: () {
|
||||
_save();
|
||||
},
|
||||
)
|
||||
],
|
||||
),
|
||||
body: ZefyrScaffold(
|
||||
child: ZefyrTheme(
|
||||
data: ZefyrThemeData().copyWith(),
|
||||
child: ZefyrEditor(
|
||||
padding: EdgeInsets.all(16),
|
||||
controller: _controller,
|
||||
focusNode: _focusNode,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
_save() {
|
||||
setState(() {
|
||||
_isLoading = true;
|
||||
});
|
||||
try {
|
||||
final contents = jsonEncode(_controller.document);
|
||||
print('contents => $contents');
|
||||
widget.onChangedData(_controller.document);
|
||||
// MainModel mainModel = Provider.of<MainModel>(context, listen: false);
|
||||
// mainModel.updateTerms(contents);
|
||||
} catch (e) {
|
||||
showMsgDialog(context, "Error", e.toString());
|
||||
} finally {
|
||||
_isLoading = false;
|
||||
Navigator.pop(context);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,20 +11,20 @@ import 'package:fcs/model/language_model.dart';
|
||||
import 'package:fcs/model/notification_model.dart';
|
||||
import 'package:fcs/model/po_model.dart';
|
||||
import 'package:fcs/model/user_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/buyer.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:fcs/vo/notification.dart' as Noti;
|
||||
|
||||
import 'announcement.dart';
|
||||
import 'buyer_info.dart';
|
||||
import 'do/do_approve.dart';
|
||||
import 'log_list.dart';
|
||||
import 'my_registeration_info.dart';
|
||||
import 'po/po_submission_form.dart';
|
||||
import 'products_list.dart';
|
||||
import 'user_editor.dart';
|
||||
import '../../../pages/announcement.dart';
|
||||
import '../../../pages/buyer_info.dart';
|
||||
import '../../../pages/do/do_approve.dart';
|
||||
import '../../../pages/log_list.dart';
|
||||
import '../../../pages/my_registeration_info.dart';
|
||||
import '../../../pages/po/po_submission_form.dart';
|
||||
import '../../../pages/products_list.dart';
|
||||
import '../../../pages/user_editor.dart';
|
||||
|
||||
final log = Logger('Util');
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
import 'package:fcs/fcs/common/pages/model/main_model.dart';
|
||||
import 'package:fcs/fcs/common/pages/widgets/bottom_widgets.dart';
|
||||
import 'package:fcs/model/language_model.dart';
|
||||
import 'package:fcs/pages/contact.dart';
|
||||
import 'package:fcs/widget/banner.dart';
|
||||
import 'package:fcs/widget/bottom_up_page_route.dart';
|
||||
import 'package:fcs/widget/localization/transalation.dart';
|
||||
import 'package:fcs/widget/offline_redirect.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_icons/flutter_icons.dart';
|
||||
import 'package:intl/intl.dart' as intl;
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../theme.dart';
|
||||
import '../helpers/theme.dart';
|
||||
import 'profile_page.dart';
|
||||
import 'signin/signin_page.dart';
|
||||
import '../../../pages/term.dart';
|
||||
@@ -136,132 +135,58 @@ class _WelcomePageState extends State<WelcomePage> {
|
||||
Color(0xfa272262),
|
||||
], // whitish to gray
|
||||
)),
|
||||
child: ListView(
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Column(
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(80.0),
|
||||
child: Text(
|
||||
"Welcome!",
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 28,
|
||||
fontFamily: "Roboto"),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 0.0),
|
||||
child: Text(
|
||||
"Cargo Services",
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 28,
|
||||
fontFamily: "Roboto"),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(10.0),
|
||||
child: Text(
|
||||
"by FCS Trading",
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 18,
|
||||
fontFamily: "Roboto"),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
padding: EdgeInsets.only(top: 10, bottom: 10),
|
||||
child: CircleAvatar(
|
||||
radius: (50),
|
||||
backgroundColor: Colors.white,
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(50),
|
||||
child: Image.asset("assets/logo.jpg"),
|
||||
)),
|
||||
),
|
||||
],
|
||||
),
|
||||
// Row(
|
||||
// children: <Widget>[
|
||||
// Expanded(
|
||||
// child: Container(
|
||||
// height: 200,
|
||||
// // child: DimensionBox(
|
||||
// // dimension: Dimension(length, width, height),
|
||||
// // color: secondaryColor,
|
||||
// // ),
|
||||
// ),
|
||||
// ),
|
||||
// RotatedBox(
|
||||
// quarterTurns: -1,
|
||||
// child: Slider(
|
||||
// min: 6,
|
||||
// max: 100,
|
||||
// value: height,
|
||||
// onChanged: (value) {
|
||||
// setState(() {
|
||||
// height = value;
|
||||
// });
|
||||
// },
|
||||
// ),
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// Row(
|
||||
// mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
// children: <Widget>[
|
||||
// Slider(
|
||||
// label: "Length",
|
||||
// min: 6,
|
||||
// max: 100,
|
||||
// value: length,
|
||||
// onChanged: (value) {
|
||||
// setState(() {
|
||||
// length = value;
|
||||
// });
|
||||
// },
|
||||
// ),
|
||||
// Slider(
|
||||
// label: "Width",
|
||||
// min: 6,
|
||||
// max: 100,
|
||||
// value: width,
|
||||
// onChanged: (value) {
|
||||
// setState(() {
|
||||
// width = value;
|
||||
// });
|
||||
// },
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 28.0),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
Expanded(
|
||||
child: ListView(
|
||||
children: <Widget>[
|
||||
InkWell(
|
||||
onTap: () {
|
||||
Navigator.of(context).push(
|
||||
MaterialPageRoute(builder: (_) => Contact()));
|
||||
},
|
||||
child: _buildSmallButton(
|
||||
"Contact Us", SimpleLineIcons.support),
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(80.0),
|
||||
child: Text(
|
||||
"Welcome!",
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 28,
|
||||
fontFamily: "Roboto"),
|
||||
),
|
||||
),
|
||||
InkWell(
|
||||
onTap: () {
|
||||
Navigator.of(context).push(
|
||||
MaterialPageRoute(builder: (_) => Term()));
|
||||
},
|
||||
child: _buildSmallButton(
|
||||
"Terms of service", Icons.info_outline),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 0.0),
|
||||
child: Text(
|
||||
"Cargo Services",
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 28,
|
||||
fontFamily: "Roboto"),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(10.0),
|
||||
child: Text(
|
||||
"by FCS Trading",
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 18,
|
||||
fontFamily: "Roboto"),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
padding: EdgeInsets.only(top: 10, bottom: 30),
|
||||
child: CircleAvatar(
|
||||
radius: (50),
|
||||
backgroundColor: Colors.white,
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(50),
|
||||
child: Image.asset("assets/logo.jpg"),
|
||||
)),
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
),
|
||||
BottomWidgets(),
|
||||
],
|
||||
))),
|
||||
),
|
||||
@@ -278,23 +203,4 @@ class _WelcomePageState extends State<WelcomePage> {
|
||||
isSelected[index] = !isSelected[index];
|
||||
});
|
||||
}
|
||||
|
||||
Widget _buildSmallButton(String text, IconData iconData) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.all(18.0),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(right: 5),
|
||||
child: Icon(iconData, color: Colors.white70, size: 18),
|
||||
),
|
||||
Text(
|
||||
text,
|
||||
style: subMenuStyle,
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
69
lib/fcs/common/pages/widgets/action_button.dart
Normal file
69
lib/fcs/common/pages/widgets/action_button.dart
Normal file
@@ -0,0 +1,69 @@
|
||||
import 'package:fcs/fcs/common/localization/app_translations.dart';
|
||||
import 'package:fcs/fcs/common/pages/model/language_model.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
typedef BtnCallback();
|
||||
|
||||
class ActionButton extends StatelessWidget {
|
||||
final String title;
|
||||
final Image imgIcon;
|
||||
final IconData icon;
|
||||
final BtnCallback btnCallback;
|
||||
|
||||
const ActionButton(
|
||||
{Key key, this.title, this.imgIcon, this.icon, this.btnCallback})
|
||||
: super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var languageModel = Provider.of<LanguageModel>(context);
|
||||
return InkWell(
|
||||
onTap: btnCallback != null ? btnCallback : () => {},
|
||||
child: Container(
|
||||
width: 120,
|
||||
height: 150,
|
||||
padding: EdgeInsets.only(top:15.0),
|
||||
decoration: new BoxDecoration(
|
||||
color: Colors.transparent,
|
||||
borderRadius: new BorderRadius.only(
|
||||
topLeft: const Radius.circular(40.0),
|
||||
topRight: const Radius.circular(40.0))),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(5.0),
|
||||
child: Column(children: <Widget>[
|
||||
ClipOval(
|
||||
child: Material(
|
||||
color: Colors.black54, // button color
|
||||
child: SizedBox(
|
||||
width: 60,
|
||||
height: 60,
|
||||
child: icon == null
|
||||
? Container(width: 10, height: 10, child: imgIcon)
|
||||
: Icon(icon, color: Colors.white, size: 30)),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
height: 50,
|
||||
alignment: Alignment.topCenter,
|
||||
child: Text(AppTranslations.of(context).text(title),
|
||||
textAlign: TextAlign.center,
|
||||
style: languageModel.isEng
|
||||
? TextStyle(
|
||||
color: Colors.white,
|
||||
fontWeight: FontWeight.w500,
|
||||
fontSize: 15.0,
|
||||
fontFamily: "Roboto")
|
||||
: TextStyle(
|
||||
color: Colors.white,
|
||||
fontWeight: FontWeight.w500,
|
||||
fontSize: 14.0,
|
||||
fontFamily: "MyanmarUnicode")),
|
||||
),
|
||||
]),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
49
lib/fcs/common/pages/widgets/bottom_widgets.dart
Normal file
49
lib/fcs/common/pages/widgets/bottom_widgets.dart
Normal file
@@ -0,0 +1,49 @@
|
||||
import 'package:fcs/fcs/common/pages/contact.dart';
|
||||
import 'package:fcs/fcs/common/pages/term.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/widget/bottom_up_page_route.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:flutter_icons/flutter_icons.dart';
|
||||
|
||||
class BottomWidgets extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: <Widget>[
|
||||
InkWell(
|
||||
onTap: () {
|
||||
Navigator.of(context).push(BottomUpPageRoute(Contact()));
|
||||
},
|
||||
child: _buildSmallButton("Contact Us", SimpleLineIcons.support),
|
||||
),
|
||||
InkWell(
|
||||
onTap: () {
|
||||
Navigator.of(context).push(BottomUpPageRoute(Term()));
|
||||
},
|
||||
child: _buildSmallButton("Terms of service", Icons.info_outline),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildSmallButton(String text, IconData iconData) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.all(18.0),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(right: 5),
|
||||
child: Icon(iconData, color: Colors.white70, size: 20),
|
||||
),
|
||||
Text(
|
||||
text,
|
||||
style: subMenuStyle,
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
30
lib/fcs/common/pages/widgets/local_text.dart
Normal file
30
lib/fcs/common/pages/widgets/local_text.dart
Normal file
@@ -0,0 +1,30 @@
|
||||
import 'package:fcs/fcs/common/localization/app_translations.dart';
|
||||
import 'package:fcs/fcs/common/pages/model/language_model.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
|
||||
|
||||
class LocalText extends Text {
|
||||
final BuildContext context;
|
||||
LocalText(this.context, String translationKey,
|
||||
{Color color,
|
||||
double fontSize,
|
||||
FontWeight fontWeight,
|
||||
List<String> translationVariables,
|
||||
bool underline = false})
|
||||
: super(
|
||||
AppTranslations.of(context).text(translationKey,
|
||||
translationVariables: translationVariables),
|
||||
style: Provider.of<LanguageModel>(context).isEng
|
||||
? newLabelStyle(
|
||||
color: color,
|
||||
fontSize: fontSize,
|
||||
fontWeight: fontWeight,
|
||||
underline: underline)
|
||||
: newLabelStyleMM(
|
||||
color: color,
|
||||
fontSize: fontSize,
|
||||
fontWeight: fontWeight,
|
||||
underline: underline));
|
||||
}
|
||||
45
lib/fcs/common/pages/widgets/progress.dart
Normal file
45
lib/fcs/common/pages/widgets/progress.dart
Normal file
@@ -0,0 +1,45 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:progress/progress.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
|
||||
class LocalProgress extends Progress {
|
||||
LocalProgress({bool inAsyncCall, Widget child})
|
||||
: super(
|
||||
inAsyncCall: inAsyncCall,
|
||||
child: child,
|
||||
opacity: 0.6,
|
||||
progressIndicator: Center(
|
||||
child: Container(
|
||||
height: 100,
|
||||
width: 300,
|
||||
child: Card(
|
||||
color: Colors.white,
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
CircularProgressIndicator(
|
||||
valueColor:
|
||||
new AlwaysStoppedAnimation<Color>(primaryColor),
|
||||
),
|
||||
SizedBox(
|
||||
height: 10,
|
||||
),
|
||||
Text("Loading...")
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
));
|
||||
|
||||
Widget build(BuildContext context) {
|
||||
// hide keyboard
|
||||
if (inAsyncCall) {
|
||||
FocusScopeNode currentFocus = FocusScope.of(context);
|
||||
if (!currentFocus.hasPrimaryFocus) {
|
||||
currentFocus.unfocus();
|
||||
}
|
||||
}
|
||||
return super.build(context);
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:fcs/config.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
import 'app.dart';
|
||||
|
||||
@@ -9,9 +8,7 @@ void main() {
|
||||
Config(
|
||||
flavor: Flavor.DEV,
|
||||
color: Colors.blue,
|
||||
apiURL: "https://localhost:7777",
|
||||
reportURL: "http://petrok-dev.mokkon.com:8080",
|
||||
reportProjectID: "dev",
|
||||
apiURL: "http://192.168.1.155:7777",
|
||||
level: Level.ALL);
|
||||
runApp(App());
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:fcs/fcs/common/api_helper.dart';
|
||||
import 'package:fcs/fcs/common/helpers/api_helper.dart';
|
||||
|
||||
import '../vo/setting.dart';
|
||||
import '../vo/user.dart';
|
||||
|
||||
@@ -4,7 +4,7 @@ import 'dart:convert' show HtmlEscape, base64, utf8;
|
||||
import 'package:cloud_firestore/cloud_firestore.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:fcs/config.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/buyer.dart';
|
||||
import 'package:fcs/vo/popup_menu.dart';
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import 'dart:typed_data';
|
||||
|
||||
import 'package:cloud_firestore/cloud_firestore.dart';
|
||||
import 'package:path/path.dart' as Path;
|
||||
import 'package:fcs/fcs/common/api_helper.dart';
|
||||
import 'package:fcs/fcs/common/helpers/api_helper.dart';
|
||||
import 'package:fcs/model/constants.dart';
|
||||
import 'package:fcs/pages/do/do_files.dart';
|
||||
import 'package:fcs/vo/do.dart';
|
||||
|
||||
@@ -23,7 +23,7 @@ import 'package:fcs/widget/NetworkConnectivity.dart';
|
||||
import '../config.dart';
|
||||
import '../vo/status.dart';
|
||||
import '../vo/user.dart';
|
||||
import '../fcs/common/api_helper.dart';
|
||||
import '../fcs/common/helpers/api_helper.dart';
|
||||
import 'base_model.dart';
|
||||
import 'constants.dart';
|
||||
import 'firebase_helper.dart';
|
||||
|
||||
@@ -6,7 +6,7 @@ import 'package:fcs/vo/report.dart';
|
||||
import 'package:fcs/vo/report_user.dart';
|
||||
import 'package:open_file/open_file.dart';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'package:fcs/fcs/common/api_helper.dart' as api;
|
||||
import 'package:fcs/fcs/common/helpers/api_helper.dart' as api;
|
||||
import 'package:fcs/vo/report.dart';
|
||||
|
||||
import '../config.dart';
|
||||
|
||||
@@ -8,8 +8,8 @@ import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import '../fcs/common/theme.dart' as Theme;
|
||||
import 'util.dart';
|
||||
import '../fcs/common/helpers/theme.dart' as Theme;
|
||||
import '../fcs/common/pages/util.dart';
|
||||
|
||||
class AddPINEditor extends StatefulWidget {
|
||||
final User user;
|
||||
|
||||
@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/announcement_model.dart';
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/vo/announcement.dart';
|
||||
import 'package:fcs/vo/popup_menu.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
@@ -12,7 +12,7 @@ import 'package:fcs/widget/popupmenu.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
import 'package:zefyr/zefyr.dart';
|
||||
|
||||
import '../fcs/common/theme.dart';
|
||||
import '../fcs/common/helpers/theme.dart';
|
||||
import 'announcement_editor.dart';
|
||||
|
||||
class AnnouncementPage extends StatefulWidget {
|
||||
|
||||
@@ -4,8 +4,8 @@ import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/announcement_model.dart';
|
||||
import 'package:fcs/model/language_model.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/announcement.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
|
||||
@@ -8,7 +8,7 @@ import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import '../fcs/common/theme.dart';
|
||||
import '../fcs/common/helpers/theme.dart';
|
||||
import 'announcement.dart';
|
||||
import 'announcement_editor.dart';
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ import 'package:flutter/material.dart';
|
||||
import 'package:image_picker/image_picker.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/bank_account.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/local_text_field.dart';
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'package:flutter/services.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/pages/banks/bank_edit.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/bank_account.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
@@ -5,7 +5,7 @@ import 'package:flutter_icons/flutter_icons.dart';
|
||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/product_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/buyer.dart';
|
||||
import 'package:fcs/vo/product.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/user_model.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/popup_menu.dart';
|
||||
import 'package:fcs/vo/user.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
|
||||
@@ -5,14 +5,14 @@ import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/buyer_model.dart';
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/pages/quota_page.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/util.dart';
|
||||
import 'package:fcs/vo/buyer.dart';
|
||||
import 'package:fcs/widget/label_widgets.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import '../fcs/common/theme.dart';
|
||||
import '../fcs/common/helpers/theme.dart';
|
||||
import 'document_log_page.dart';
|
||||
|
||||
class BuyerInfo extends StatefulWidget {
|
||||
|
||||
@@ -9,7 +9,7 @@ import 'package:fcs/widget/popupmenu.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import '../fcs/common/theme.dart';
|
||||
import '../fcs/common/helpers/theme.dart';
|
||||
import 'buyer_list_row.dart';
|
||||
|
||||
class BuyerList extends StatefulWidget {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/buyer_model.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/buyer.dart';
|
||||
|
||||
import 'buyer_info.dart';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/vo/manual.dart';
|
||||
import 'package:fcs/widget/bottom_up_page_route.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -7,7 +7,7 @@ import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import '../fcs/common/theme.dart';
|
||||
import '../fcs/common/helpers/theme.dart';
|
||||
import '../widget/label_widgets.dart';
|
||||
import '../widget/local_text.dart';
|
||||
import 'instruction.dart';
|
||||
|
||||
@@ -6,7 +6,7 @@ import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import '../fcs/common/theme.dart';
|
||||
import '../fcs/common/helpers/theme.dart';
|
||||
|
||||
class CalculateShipmentCostEditor extends StatefulWidget {
|
||||
final PickUp pickUp;
|
||||
|
||||
@@ -9,9 +9,9 @@ import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import '../fcs/common/theme.dart' as Theme;
|
||||
import '../fcs/common/helpers/theme.dart' as Theme;
|
||||
import 'confirm_email.dart';
|
||||
import 'util.dart';
|
||||
import '../fcs/common/pages/util.dart';
|
||||
|
||||
class ChangePhoneNumber extends StatefulWidget {
|
||||
final User user;
|
||||
|
||||
@@ -9,8 +9,8 @@ import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import '../fcs/common/theme.dart' as Theme;
|
||||
import 'util.dart';
|
||||
import '../fcs/common/helpers/theme.dart' as Theme;
|
||||
import '../fcs/common/pages/util.dart';
|
||||
|
||||
class ChangePassword extends StatefulWidget {
|
||||
final User user;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/user_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import 'util.dart';
|
||||
import '../fcs/common/pages/util.dart';
|
||||
|
||||
class ConfirmEmail extends StatefulWidget {
|
||||
final String id, email, phoneNumber;
|
||||
|
||||
@@ -6,8 +6,8 @@ import 'package:package_info/package_info.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/language_model.dart';
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/pages/phone_input.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/setting.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/local_text_field.dart';
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/vo/custom.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||
import '../fcs/common/theme.dart';
|
||||
import '../fcs/common/helpers/theme.dart';
|
||||
|
||||
class CustomEditor extends StatefulWidget {
|
||||
final Custom custom;
|
||||
|
||||
@@ -4,13 +4,13 @@ import 'package:fcs/model/employee_model.dart';
|
||||
import 'package:fcs/model/language_model.dart';
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/model/user_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/role.dart';
|
||||
import 'package:fcs/vo/user.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
import 'util.dart';
|
||||
import '../fcs/common/pages/util.dart';
|
||||
|
||||
typedef void FindCallBack();
|
||||
|
||||
|
||||
@@ -7,15 +7,15 @@ import 'package:flutter_icons/flutter_icons.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import '../fcs/common/theme.dart';
|
||||
import '../fcs/common/helpers/theme.dart';
|
||||
import '../vo/user.dart';
|
||||
import '../widget/local_text.dart';
|
||||
import 'customer_editor.dart';
|
||||
import 'invitation_page.dart';
|
||||
import 'util.dart';
|
||||
import '../fcs/common/pages/util.dart';
|
||||
|
||||
class CustomerList extends StatefulWidget {
|
||||
@override
|
||||
|
||||
@@ -12,7 +12,7 @@ import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/model/po_model.dart';
|
||||
import 'package:fcs/model/product_model.dart';
|
||||
import 'package:fcs/pages/do/photo_page.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/do.dart';
|
||||
import 'package:fcs/widget/img_file.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
@@ -21,7 +21,7 @@ import 'package:fcs/widget/my_data_table.dart';
|
||||
import 'package:fcs/widget/number_cell.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import '../util.dart';
|
||||
import '../../fcs/common/pages/util.dart';
|
||||
|
||||
class DeliveryItem extends StatefulWidget {
|
||||
final DOSubmission doSubmission;
|
||||
|
||||
@@ -6,8 +6,8 @@ import 'package:fcs/model/delivery_model.dart';
|
||||
import 'package:fcs/model/language_model.dart';
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/pages/delivery/delivery_item.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/popup_menu.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:fcs/widget/popupmenu.dart';
|
||||
|
||||
@@ -8,8 +8,8 @@ import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/popupmenu.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import '../fcs/common/theme.dart';
|
||||
import 'util.dart';
|
||||
import '../fcs/common/helpers/theme.dart';
|
||||
import '../fcs/common/pages/util.dart';
|
||||
|
||||
class PhoneDeviceList extends StatefulWidget {
|
||||
@override
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/vo/custom.dart';
|
||||
import 'package:fcs/vo/discount.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||
import '../fcs/common/theme.dart';
|
||||
import '../fcs/common/helpers/theme.dart';
|
||||
|
||||
class DiscountByWeightEditor extends StatefulWidget {
|
||||
final Discount discount;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'package:fcs/model/discount_model.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/vo/discount.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_icons/flutter_icons.dart';
|
||||
@@ -8,7 +8,7 @@ import 'package:provider/provider.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import '../fcs/common/theme.dart';
|
||||
import '../fcs/common/helpers/theme.dart';
|
||||
|
||||
class DiscountEditor extends StatefulWidget {
|
||||
final Discount discount;
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import 'package:fcs/model/discount_model.dart';
|
||||
import 'package:fcs/pages/discount_editor.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/widget/bottom_up_page_route.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import '../fcs/common/theme.dart';
|
||||
import '../fcs/common/helpers/theme.dart';
|
||||
|
||||
class DiscountList extends StatefulWidget {
|
||||
@override
|
||||
|
||||
@@ -13,7 +13,7 @@ import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/model/po_model.dart';
|
||||
import 'package:fcs/model/product_model.dart';
|
||||
import 'package:fcs/pages/do/photo_page.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/do.dart';
|
||||
import 'package:fcs/vo/po.dart';
|
||||
import 'package:fcs/widget/img_file.dart';
|
||||
@@ -24,7 +24,7 @@ import 'package:fcs/widget/number_cell.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import '../document_log_page.dart';
|
||||
import '../util.dart';
|
||||
import '../../fcs/common/pages/util.dart';
|
||||
import 'do_files.dart';
|
||||
import 'do_storage_item.dart';
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/model/po_model.dart';
|
||||
import 'package:fcs/model/product_model.dart';
|
||||
import 'package:fcs/pages/do/do_product_item.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/do.dart';
|
||||
import 'package:fcs/vo/po.dart';
|
||||
import 'package:fcs/widget/img_file.dart';
|
||||
|
||||
@@ -2,8 +2,8 @@ import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/language_model.dart';
|
||||
import 'package:fcs/model/po_model.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/do.dart';
|
||||
import 'package:fcs/vo/po.dart';
|
||||
import 'package:fcs/widget/img_file.dart';
|
||||
|
||||
@@ -5,8 +5,8 @@ import 'package:fcs/model/do_model.dart';
|
||||
import 'package:fcs/model/language_model.dart';
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/pages/do/do_creation_form.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/popup_menu.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:fcs/widget/popupmenu.dart';
|
||||
|
||||
@@ -2,8 +2,8 @@ import 'package:flutter/material.dart';
|
||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/language_model.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/do.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/storage_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/util.dart';
|
||||
import 'package:fcs/vo/do.dart';
|
||||
import 'package:fcs/vo/storage.dart';
|
||||
|
||||
@@ -3,10 +3,10 @@ import 'package:flutter/material.dart';
|
||||
import 'package:image_picker/image_picker.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/language_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
|
||||
import '../util.dart';
|
||||
import '../../fcs/common/pages/util.dart';
|
||||
|
||||
class PhotoPage extends StatefulWidget {
|
||||
PhotoPage({Key key}) : super(key: key);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/po.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/log_model.dart';
|
||||
import 'package:fcs/model/user_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/document_log.dart';
|
||||
import 'package:fcs/vo/role.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
|
||||
@@ -4,14 +4,14 @@ import 'package:fcs/model/language_model.dart';
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/model/shared_pref.dart';
|
||||
import 'package:fcs/model/user_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/user.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import 'confirm_email.dart';
|
||||
import 'util.dart';
|
||||
import '../fcs/common/pages/util.dart';
|
||||
|
||||
class EmailPage extends StatefulWidget {
|
||||
final User user;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'package:fcs/model/pickup_model.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/vo/pickup.dart';
|
||||
import 'package:fcs/widget/fcs_text_field.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
@@ -9,7 +9,7 @@ import 'package:provider/provider.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import '../fcs/common/theme.dart';
|
||||
import '../fcs/common/helpers/theme.dart';
|
||||
|
||||
class FCSProfilePage extends StatefulWidget {
|
||||
final PickUp pickUp;
|
||||
|
||||
@@ -4,12 +4,12 @@ import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/model/user_model.dart';
|
||||
import 'package:fcs/pages/reset_password.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import 'util.dart';
|
||||
import '../fcs/common/pages/util.dart';
|
||||
|
||||
class ForgetPassword extends StatefulWidget {
|
||||
final phoneNumber;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/language_model.dart';
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/model/manual_model.dart';
|
||||
import 'package:fcs/pages/manual/manual_item_title_dialog.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/vo/manual.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/fcs/common/pages/util.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||
import '../fcs/common/theme.dart';
|
||||
import '../fcs/common/helpers/theme.dart';
|
||||
|
||||
class InvitationPage extends StatefulWidget {
|
||||
@override
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'package:fcs/model_fcs/box_model.dart';
|
||||
import 'package:fcs/model_fcs/package_model.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/box.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/model/shipment_model.dart';
|
||||
import 'package:fcs/model_fcs/package_model.dart';
|
||||
import 'package:fcs/pages_fcs/package_list_row.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/widget/bottom_up_page_route.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
@@ -2,7 +2,7 @@ import 'package:fcs/model/discount_model.dart';
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/model_fcs/box_model.dart';
|
||||
import 'package:fcs/pages/invoice/package_addition.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/box.dart';
|
||||
import 'package:fcs/vo/cargo.dart';
|
||||
import 'package:fcs/vo/invoice.dart';
|
||||
@@ -20,7 +20,7 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../util.dart';
|
||||
import '../../fcs/common/pages/util.dart';
|
||||
import 'box_addition.dart';
|
||||
|
||||
class InvoiceEditor extends StatefulWidget {
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'dart:io';
|
||||
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/pages/invoice/payment_pdf_screen.dart';
|
||||
import 'package:fcs/fcs/common/theme.dart';
|
||||
import 'package:fcs/fcs/common/helpers/theme.dart';
|
||||
import 'package:fcs/vo/invoice.dart';
|
||||
import 'package:fcs/widget/bottom_up_page_route.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
@@ -14,7 +14,7 @@ import 'package:intl/intl.dart';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../util.dart';
|
||||
import '../../fcs/common/pages/util.dart';
|
||||
import 'invoice_editor.dart';
|
||||
import 'payment_page.dart';
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user