add signin function

This commit is contained in:
Sai Naw Wun
2020-08-30 21:26:37 +06:30
parent 76155a10e8
commit 10338bbfe9
176 changed files with 664 additions and 756 deletions

View File

@@ -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 '../theme/theme.dart' as Theme;
import '../fcs/common/theme.dart' as Theme;
import 'util.dart';
class AddPINEditor extends StatefulWidget {

View File

@@ -12,7 +12,7 @@ import 'package:fcs/widget/popupmenu.dart';
import 'package:fcs/widget/progress.dart';
import 'package:zefyr/zefyr.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import 'announcement_editor.dart';
class AnnouncementPage extends StatefulWidget {

View File

@@ -5,7 +5,7 @@ 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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/announcement.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/localization/app_translations.dart';

View File

@@ -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 '../theme/theme.dart';
import '../fcs/common/theme.dart';
import 'announcement.dart';
import 'announcement_editor.dart';
@@ -43,15 +43,13 @@ class _AnnouncementListState extends State<AnnouncementList> {
inAsyncCall: _isLoading,
child: Scaffold(
appBar: AppBar(
backgroundColor: primaryColor,
title:
LocalText(
context,
"announcement.title",
color: Colors.white,
fontSize: 20,
)
),
backgroundColor: primaryColor,
title: LocalText(
context,
"announcement.title",
color: Colors.white,
fontSize: 20,
)),
floatingActionButton: isOwnerAndAbove || hasAdmin
? FloatingActionButton(
backgroundColor: primaryColor,
@@ -118,19 +116,22 @@ class _AnnouncementListState extends State<AnnouncementList> {
],
),
),
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(announce.time==null?"":timeFormatter.format(announce.time)),
),
announce.fromToday()
? Container()
: Text(announce.time==null?"":dateFormatter.format(announce.time)),
],
)
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(announce.time == null
? ""
: timeFormatter.format(announce.time)),
),
announce.fromToday()
? Container()
: Text(announce.time == null
? ""
: dateFormatter.format(announce.time)),
],
)
],
),
),

View File

@@ -5,7 +5,7 @@ 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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/bank_account.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/local_text_field.dart';

View File

@@ -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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/bank_account.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/progress.dart';

View File

@@ -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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/buyer.dart';
import 'package:fcs/vo/product.dart';
import 'package:fcs/widget/progress.dart';

View File

@@ -2,7 +2,7 @@ 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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/popup_menu.dart';
import 'package:fcs/vo/user.dart';
import 'package:fcs/widget/local_text.dart';

View File

@@ -12,7 +12,7 @@ import 'package:fcs/widget/label_widgets.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import 'document_log_page.dart';
class BuyerInfo extends StatefulWidget {

View File

@@ -9,7 +9,7 @@ import 'package:fcs/widget/popupmenu.dart';
import 'package:flutter/material.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import 'buyer_list_row.dart';
class BuyerList extends StatefulWidget {

View File

@@ -2,7 +2,7 @@ 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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/buyer.dart';
import 'buyer_info.dart';

View File

@@ -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 '../theme/theme.dart';
import '../fcs/common/theme.dart';
import '../widget/label_widgets.dart';
import '../widget/local_text.dart';
import 'instruction.dart';

View File

@@ -6,17 +6,19 @@ import 'package:fcs/widget/localization/app_translations.dart';
import 'package:flutter/material.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
class CalculateShipmentCostEditor extends StatefulWidget {
final PickUp pickUp;
CalculateShipmentCostEditor({this.pickUp});
@override
_CalculateShipmentCostEditorState createState() => _CalculateShipmentCostEditorState();
_CalculateShipmentCostEditorState createState() =>
_CalculateShipmentCostEditorState();
}
class _CalculateShipmentCostEditorState extends State<CalculateShipmentCostEditor> {
class _CalculateShipmentCostEditorState
extends State<CalculateShipmentCostEditor> {
TextEditingController _addressEditingController = new TextEditingController();
TextEditingController _fromTimeEditingController =
new TextEditingController();

View File

@@ -9,7 +9,7 @@ import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart' as Theme;
import '../fcs/common/theme.dart' as Theme;
import 'confirm_email.dart';
import 'util.dart';

View File

@@ -9,7 +9,7 @@ import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart' as Theme;
import '../fcs/common/theme.dart' as Theme;
import 'util.dart';
class ChangePassword extends StatefulWidget {

View File

@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/user_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/progress.dart';
@@ -38,7 +38,7 @@ class _ConfirmEmailState extends State<ConfirmEmail> {
try {
await userModel.confirmEmail(
widget.id, widget.email, widget.phoneNumber, _sms.text);
Navigator.pushNamedAndRemoveUntil(context, "/home", (r) => false);
Navigator.pushNamedAndRemoveUntil(context, "/welcome", (r) => false);
} catch (e) {
showMsgDialog(context, "Error", e.toString());
}

View File

@@ -7,7 +7,7 @@ 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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/progress.dart';

View File

@@ -5,7 +5,7 @@ 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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/setting.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/local_text_field.dart';

View File

@@ -4,7 +4,7 @@ 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 '../theme/theme.dart';
import '../fcs/common/theme.dart';
class CustomEditor extends StatefulWidget {
final Custom custom;

View File

@@ -4,7 +4,7 @@ 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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/role.dart';
import 'package:fcs/vo/user.dart';
import 'package:fcs/widget/local_text.dart';

View File

@@ -7,10 +7,10 @@ import 'package:flutter_icons/flutter_icons.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import '../vo/user.dart';
import '../widget/local_text.dart';
import 'customer_editor.dart';

View File

@@ -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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/do.dart';
import 'package:fcs/widget/img_file.dart';
import 'package:fcs/widget/local_text.dart';
@@ -425,8 +425,8 @@ class _DeliveryItemState extends State<DeliveryItem> {
label: LocalText(context, "do.storage"),
),
MyDataColumn(
label: LocalText(context, "do.quantity"),numeric: true
),
label: LocalText(context, "do.quantity"),
numeric: true),
],
rows: getProductRow(doObj.doLines),
),
@@ -446,7 +446,7 @@ class _DeliveryItemState extends State<DeliveryItem> {
List<MyDataRow> getProductRow(List<DOLine> doLines) {
ProductModel productModel = Provider.of<ProductModel>(context);
if (doLines.isNotEmpty) {
if (doLines.isNotEmpty) {
doLines.forEach((d) {
productModel.products.forEach((p) {
if (p.id == d.productID) {
@@ -471,9 +471,7 @@ class _DeliveryItemState extends State<DeliveryItem> {
MyDataCell(
new Text(d.storageName, style: textStyle),
),
MyDataCell(
NumberCell(d.qty)
),
MyDataCell(NumberCell(d.qty)),
],
);
}).toList();

View File

@@ -7,7 +7,7 @@ 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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/popup_menu.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/popupmenu.dart';

View File

@@ -8,7 +8,7 @@ import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/popupmenu.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import 'util.dart';
class PhoneDeviceList extends StatefulWidget {

View File

@@ -5,7 +5,7 @@ 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 '../theme/theme.dart';
import '../fcs/common/theme.dart';
class DiscountByWeightEditor extends StatefulWidget {
final Discount discount;

View File

@@ -8,7 +8,7 @@ import 'package:provider/provider.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
class DiscountEditor extends StatefulWidget {
final Discount discount;

View File

@@ -7,7 +7,7 @@ import 'package:provider/provider.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
class DiscountList extends StatefulWidget {
@override
@@ -95,7 +95,8 @@ class _DiscountListState extends State<DiscountList> {
crossAxisAlignment: CrossAxisAlignment.end,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(left: 10.0,bottom: 5.0),
padding:
const EdgeInsets.only(left: 10.0, bottom: 5.0),
child: Text(
'\$ ${discount.amount.toString()}',
style: TextStyle(
@@ -104,7 +105,7 @@ class _DiscountListState extends State<DiscountList> {
fontSize: 16),
),
),
getStatus(discount.status),
getStatus(discount.status),
],
),
],

View File

@@ -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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/do.dart';
import 'package:fcs/vo/po.dart';
import 'package:fcs/widget/img_file.dart';
@@ -539,8 +539,9 @@ class _DOApprovalState extends State<DOApproval> {
label: LocalText(context, "do.storage"),
),
MyDataColumn(
label: LocalText(context, "do.quantity"),numeric: true
),
label:
LocalText(context, "do.quantity"),
numeric: true),
],
rows: getProductRow(doObj.doLines),
),
@@ -633,16 +634,20 @@ class _DOApprovalState extends State<DOApproval> {
MyDataColumn(label: LocalText(context, "po.number")),
MyDataColumn(label: LocalText(context, "po.product")),
MyDataColumn(
label: LocalText(context, "do.po_qty"),numeric: true,
label: LocalText(context, "do.po_qty"),
numeric: true,
),
MyDataColumn(
label: LocalText(context, "do.po_balance_qty"),numeric: true,
label: LocalText(context, "do.po_balance_qty"),
numeric: true,
),
MyDataColumn(
label: LocalText(context, "po.retrieved.amount"),numeric: true,
label: LocalText(context, "po.retrieved.amount"),
numeric: true,
),
MyDataColumn(
label: LocalText(context, "do.do_qty"),numeric: true,
label: LocalText(context, "do.do_qty"),
numeric: true,
),
],
rows: getPOProductRow(),

View File

@@ -9,7 +9,7 @@ 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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/do.dart';
import 'package:fcs/vo/po.dart';
import 'package:fcs/widget/img_file.dart';
@@ -415,9 +415,7 @@ class _DOFormState extends State<DOForm> {
columns: [
MyDataColumn(label: LocalText(context, "do.product")),
MyDataColumn(
label: LocalText(context, "po.avail.qty"),
numeric: true
),
label: LocalText(context, "po.avail.qty"), numeric: true),
MyDataColumn(
label: LocalText(context, "do.do_qty"),
numeric: true,
@@ -464,19 +462,17 @@ class _DOFormState extends State<DOForm> {
style: textStyle,
),
),
MyDataCell(
NumberCell(d.poBalQty)
),
MyDataCell(NumberCell(d.poBalQty)),
MyDataCell(
Container(
color: Colors.cyan,
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
new Text(d.qty == null ? "0" : d.qty.toString(),
style: textStyle),
],
)),
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
new Text(d.qty == null ? "0" : d.qty.toString(),
style: textStyle),
],
)),
),
],
);
@@ -504,16 +500,20 @@ class _DOFormState extends State<DOForm> {
MyDataColumn(label: LocalText(context, "po.number")),
MyDataColumn(label: LocalText(context, "po.product")),
MyDataColumn(
label: LocalText(context, "do.po_qty"),numeric: true,
label: LocalText(context, "do.po_qty"),
numeric: true,
),
MyDataColumn(
label: LocalText(context, "po.avail.qty"),numeric: true,
label: LocalText(context, "po.avail.qty"),
numeric: true,
),
MyDataColumn(
label: LocalText(context, "po.retrieved.amount"),numeric: true,
label: LocalText(context, "po.retrieved.amount"),
numeric: true,
),
MyDataColumn(
label: LocalText(context, "do.do_qty"),numeric: true,
label: LocalText(context, "do.do_qty"),
numeric: true,
),
],
rows: getPOProductRow(),
@@ -540,8 +540,8 @@ class _DOFormState extends State<DOForm> {
});
doSubmission.dopoLies.sort((p1, p2) {
if (p1.displayOrder!=p2.displayOrder)
return p1.displayOrder.compareTo(p2.displayOrder);
if (p1.displayOrder != p2.displayOrder)
return p1.displayOrder.compareTo(p2.displayOrder);
return p1.poNumber.compareTo(p2.poNumber);
});
}
@@ -560,15 +560,9 @@ class _DOFormState extends State<DOForm> {
style: textStyle,
),
),
MyDataCell(
NumberCell(d.poQty)
),
MyDataCell(
NumberCell(d.poBalQty)
),
MyDataCell(
NumberCell(d.getPoBalanceQty)
),
MyDataCell(NumberCell(d.poQty)),
MyDataCell(NumberCell(d.poBalQty)),
MyDataCell(NumberCell(d.getPoBalanceQty)),
MyDataCell(
Container(
color: Colors.grey,

View File

@@ -3,7 +3,7 @@ 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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/do.dart';
import 'package:fcs/vo/po.dart';
import 'package:fcs/widget/img_file.dart';

View File

@@ -6,7 +6,7 @@ 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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/popup_menu.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/popupmenu.dart';

View File

@@ -3,7 +3,7 @@ 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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/do.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/localization/app_translations.dart';

View File

@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/storage_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/util.dart';
import 'package:fcs/vo/do.dart';
import 'package:fcs/vo/storage.dart';

View File

@@ -3,7 +3,7 @@ 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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import '../util.dart';

View File

@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/po.dart';
import 'package:fcs/widget/local_text.dart';

View File

@@ -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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/document_log.dart';
import 'package:fcs/vo/role.dart';
import 'package:fcs/widget/local_text.dart';

View File

@@ -4,7 +4,7 @@ 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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/user.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/localization/app_translations.dart';
@@ -82,7 +82,8 @@ class _EmailPageState extends State<EmailPage> {
child: InkWell(
onTap: () {
SharedPref.saveSkippedRecoverEmail(true);
Navigator.pushNamedAndRemoveUntil(context, "/home", (r) => false);
Navigator.pushNamedAndRemoveUntil(
context, "/welcome", (r) => false);
},
child: Row(
mainAxisAlignment: MainAxisAlignment.end,

View File

@@ -9,7 +9,7 @@ import 'package:provider/provider.dart';
import 'package:flutter/material.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
class FCSProfilePage extends StatefulWidget {
final PickUp pickUp;

View File

@@ -4,7 +4,7 @@ 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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/progress.dart';

View File

@@ -1,519 +0,0 @@
import 'package:country_code_picker/country_code.dart';
import 'package:fcs/model/main_model.dart';
import 'package:fcs/pages/discount_list.dart';
import 'package:fcs/pages/payment_method_page.dart';
import 'package:fcs/pages/shipment_list.dart';
import 'package:fcs/pages_fcs/box_list.dart';
import 'package:fcs/pages_fcs/delivery_list.dart';
import 'package:fcs/pages_fcs/package_list.dart';
import 'package:fcs/widget/bottom_up_page_route.dart';
import 'package:fcs/widget/localization/transalation.dart';
import 'package:fcs/widget/right_left_page_route%20copy.dart';
import 'package:flutter/material.dart';
import 'package:flutter_icons/flutter_icons.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:intl/intl.dart';
import 'package:logging/logging.dart';
import 'package:provider/provider.dart';
import 'dart:math' as math;
import 'package:fcs/charts/bar_chart.dart';
import 'package:fcs/charts/delivery_do_line.dart';
import 'package:fcs/charts/delivery_do_summary.dart';
import 'package:fcs/charts/delivery_line.dart';
import 'package:fcs/charts/delivery_summary.dart';
import 'package:fcs/charts/do_line.dart';
import 'package:fcs/charts/po_balance_chart.dart';
import 'package:fcs/charts/po_line.dart';
import 'package:fcs/charts/revenue_line.dart';
import 'package:fcs/model/language_model.dart';
import 'package:fcs/model/product_model.dart';
import 'package:fcs/pages/banks/banks.dart';
import 'package:fcs/pages/buyer_list.dart';
import 'package:fcs/pages/contact.dart';
import 'package:fcs/pages/delivery/delivery_list.dart';
import 'package:fcs/pages/manual/manual_page.dart';
import 'package:fcs/pages/notification_list.dart';
import 'package:fcs/pages/term.dart';
import 'package:fcs/reports/report_list.dart';
import 'package:fcs/widget/banner.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/offline_redirect.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:intl/intl.dart';
import 'package:logging/logging.dart';
import 'package:provider/provider.dart';
import '../theme/theme.dart';
import 'announcement_list.dart';
import 'buying_online.dart';
import 'customer_list.dart';
import 'do/do_list.dart';
import 'invoice/invoce_list.dart';
import 'my_registeration.dart';
import 'pd/pd_list.dart';
import 'products_list.dart';
import 'profile_page.dart';
import '../fcs/common/pages/signin/signin_page.dart';
import 'staff_list.dart';
import 'fcs_profile_page.dart';
import 'pd/pd_list.dart';
import 'pickup_list.dart';
import 'products_list.dart';
import 'profile_page.dart';
import 'shipment_rates.dart';
import 'storage/storage_list.dart';
import 'user_list.dart';
final msgLog = Logger('backgroundMessageHandler');
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
typedef BtnCallback();
class _HomePageState extends State<HomePage> {
final log = Logger('_HomePageState');
bool login = false;
bool customer = true;
@override
void initState() {
super.initState();
}
void dispose() {
super.dispose();
}
static final List<String> chartDropdownItems = [
'Last 7 days',
'Last month',
'Last three months'
];
String actualDropdown = chartDropdownItems[0];
int actualChart = 0;
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();
final packagesBtn = _buildBtn2("package.name",
icon: Octicons.package,
btnCallback: () =>
Navigator.of(context).push(BottomUpPageRoute(PackageList())));
final boxesBtn = _buildBtn2("boxes.name",
icon: MaterialCommunityIcons.package,
btnCallback: () =>
Navigator.of(context).push(BottomUpPageRoute(BoxList())));
final pickUpBtn = _buildBtn2("pickup",
icon: SimpleLineIcons.direction,
btnCallback: () =>
Navigator.of(context).push(BottomUpPageRoute(PickUpList())));
final shipmentCostBtn = _buildBtn2("rate",
icon: FontAwesomeIcons.calculator,
btnCallback: () =>
Navigator.of(context).push(BottomUpPageRoute(ShipmentRates())));
final fcsProfileBtn = _buildBtn2("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",
icon: Ionicons.ios_airplane,
imgIcon: Image.asset(
"assets/truck.png",
width: 50,
height: 50,
color: primaryColor,
),
btnCallback: () =>
Navigator.of(context).push(BottomUpPageRoute(ShipmentList())));
final buyingBtn = _buildBtn2("buy_online",
icon: MaterialCommunityIcons.cart_outline, btnCallback: () {
Navigator.push(context, BottomUpPageRoute(BuyingOnlinePage())
// MaterialPageRoute(builder: (context) => BuyingOnlinePage()),
);
});
final notiBtn =
_buildBtn2("message.btn", icon: Icons.message, btnCallback: () {
Navigator.push(
context,
BottomUpPageRoute(NotificationList()),
);
});
final staffBtn = _buildBtn2("staff.title",
icon: MaterialCommunityIcons.worker,
btnCallback: () =>
Navigator.of(context).push(BottomUpPageRoute(StaffList())));
final customersBtn = _buildBtn2("customers.btn",
icon: Feather.users,
btnCallback: () =>
Navigator.of(context).push(BottomUpPageRoute(CustomerList())));
final invoicesBtn = _buildBtn2("invoices.btn",
icon: FontAwesomeIcons.fileInvoice,
btnCallback: () =>
Navigator.of(context).push(BottomUpPageRoute(InvoiceList())));
final paymentMethodBtn = _buildBtn2("payment.method.btn",
icon: FontAwesomeIcons.creditCard,
btnCallback: () =>
Navigator.of(context).push(BottomUpPageRoute(PaymentMethodPage())));
final discountBtn = _buildBtn2("discount.btn",
icon: Entypo.price_ribbon,
btnCallback: () =>
Navigator.of(context).push(BottomUpPageRoute(DiscountList())));
final termBtn = _buildBtn2("term.btn",
icon: FontAwesomeIcons.info,
btnCallback: () =>
Navigator.of(context).push(BottomUpPageRoute(Term())));
final deliveryBtn = _buildBtn2("delivery.title",
icon: MaterialCommunityIcons.truck_fast,
btnCallback: () =>
Navigator.of(context).push(BottomUpPageRoute(DeliverList())));
List<Widget> widgets = [];
customer ? widgets.add(buyingBtn) : "";
customer || owner ? widgets.add(pickUpBtn) : "";
owner ? widgets.add(shipmentBtn) : "";
customer || owner ? widgets.add(notiBtn) : "";
owner ? widgets.add(staffBtn) : "";
owner ? widgets.add(fcsProfileBtn) : "";
widgets.add(shipmentCostBtn);
customer || owner ? widgets.add(packagesBtn) : "";
owner ? widgets.add(boxesBtn) : "";
owner ? widgets.add(deliveryBtn) : "";
owner ? widgets.add(customersBtn) : "";
customer || owner ? widgets.add(invoicesBtn) : "";
owner ? widgets.add(paymentMethodBtn) : "";
owner ? widgets.add(discountBtn) : "";
// widgets.add(termBtn);
return OfflineRedirect(
child: FlavorBanner(
child: Scaffold(
appBar: AppBar(
elevation: 0,
backgroundColor: primaryColor,
title: ClipRRect(
child: Image.asset("assets/logo.jpg", height: 40),
borderRadius: new BorderRadius.circular(30.0),
),
actions: login
? <Widget>[
ToggleButtons(
children: <Widget>[
Image.asset(
'icons/flags/png/us.png',
package: 'country_icons',
fit: BoxFit.fitWidth,
width: 25,
),
Image.asset(
'icons/flags/png/mm.png',
package: 'country_icons',
fit: BoxFit.fitWidth,
width: 25,
)
],
onPressed: _langChange,
isSelected: isSelected,
),
IconButton(
onPressed: () {
Navigator.of(context)
.push(RightLeftPageRoute(Profile()));
},
iconSize: 30,
icon: Icon(Icons.account_circle),
),
]
: <Widget>[
ToggleButtons(
children: <Widget>[
Image.asset(
'icons/flags/png/us.png',
package: 'country_icons',
fit: BoxFit.fitWidth,
width: 25,
),
Image.asset(
'icons/flags/png/mm.png',
package: 'country_icons',
fit: BoxFit.fitWidth,
width: 25,
)
],
onPressed: _langChange,
isSelected: isSelected,
),
FlatButton(
onPressed: () {
Navigator.of(context)
.push(BottomUpPageRoute(SigninPage()));
},
// iconSize: 30,
child: Text(
"Sign In",
style: siginButtonStyle,
),
),
]),
body: Container(
decoration: BoxDecoration(
gradient:
// RadialGradient(
// center: const Alignment(-0.7, 0.6), // near the top right
// radius: 0.6,
// colors: [
// secondaryColor,
// primaryColor, // yellow sun
// ],
// stops: [0.4, 1.0],
// )
LinearGradient(
begin: Alignment.topCenter,
end: Alignment
.bottomCenter, // 10% of the width, so there are ten blinds.
colors: [
Color(0xd0272262),
Color(0xfa272262),
// Color(0xa0ff4400),
// secondaryColor,
], // whitish to gray
),
// SweepGradient(
// center: FractionalOffset.centerLeft,
// startAngle: 0.0,
// endAngle: math.pi * 2,
// colors: const <Color>[
// secondaryColor,
// primaryColor,
// secondaryColor,
// primaryColor,
// secondaryColor,
// ],
// stops: const <double>[0.0, 0.25, 0.5, 0.75, 1.0],
// ),
),
child: Column(
children: <Widget>[
Expanded(
child: Padding(
padding: const EdgeInsets.only(top: 8.0),
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),
),
],
),
)
],
))),
),
);
}
_langChange(index) {
var languageModel = Provider.of<LanguageModel>(context);
languageModel.saveLanguage(Translation().supportedLanguages[index]);
setState(() {
isSelected.asMap().forEach((i, e) {
isSelected[i] = false;
});
isSelected[index] = !isSelected[index];
});
}
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,
)
],
),
);
}
}

View File

@@ -1,310 +0,0 @@
import 'package:fcs/model/language_model.dart';
import 'package:fcs/model/main_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/dimension_box.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/theme.dart';
import 'profile_page.dart';
import '../fcs/common/pages/signin/signin_page.dart';
import 'term.dart';
final msgLog = Logger('backgroundMessageHandler');
class HomePageWelcome extends StatefulWidget {
@override
_HomePageWelcomeState createState() => _HomePageWelcomeState();
}
typedef BtnCallback();
class _HomePageWelcomeState extends State<HomePageWelcome> {
final log = Logger('_HomePageWelcomeState');
bool login = false;
bool customer = true;
double length = 10;
double width = 10;
double height = 10;
@override
void initState() {
super.initState();
}
void dispose() {
super.dispose();
}
int actualChart = 0;
final numberFormatter = new intl.NumberFormat("#,###");
String pin;
List<bool> isSelected = [true, false];
@override
Widget build(BuildContext context) {
login = Provider.of<MainModel>(context).isLogin();
return OfflineRedirect(
child: FlavorBanner(
child: Scaffold(
appBar: AppBar(
elevation: 0,
backgroundColor: primaryColor,
title: ClipRRect(
child: Image.asset("assets/logo.jpg", height: 40),
borderRadius: new BorderRadius.circular(30.0),
),
actions: login
? <Widget>[
ToggleButtons(
children: <Widget>[
Image.asset(
'icons/flags/png/us.png',
package: 'country_icons',
fit: BoxFit.fitWidth,
width: 25,
),
Image.asset(
'icons/flags/png/mm.png',
package: 'country_icons',
fit: BoxFit.fitWidth,
width: 25,
)
],
onPressed: _langChange,
isSelected: isSelected,
),
IconButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Profile()),
);
},
iconSize: 30,
icon: Icon(Icons.account_circle),
),
]
: <Widget>[
ToggleButtons(
children: <Widget>[
Image.asset(
'icons/flags/png/us.png',
package: 'country_icons',
fit: BoxFit.fitWidth,
width: 25,
),
Image.asset(
'icons/flags/png/mm.png',
package: 'country_icons',
fit: BoxFit.fitWidth,
width: 25,
)
],
onPressed: _langChange,
isSelected: isSelected,
),
FlatButton(
onPressed: () {
Navigator.of(context)
.push(BottomUpPageRoute(SigninPage()));
},
// iconSize: 30,
child: Text(
"Sign In",
style: siginButtonStyle,
),
),
]),
body: Container(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment
.bottomCenter, // 10% of the width, so there are ten blinds.
colors: [
Color(0xd0272262),
Color(0xfa272262),
], // whitish to gray
)),
child: Column(
children: <Widget>[
Expanded(
child: 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;
// });
// },
// ),
// ],
// ),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
// _buildSmallButton(
// "Policies", FontAwesomeIcons.fileContract),
InkWell(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => Contact()));
},
child: _buildSmallButton(
"Contact Us", SimpleLineIcons.support),
),
InkWell(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => Term()));
},
child: _buildSmallButton(
"Terms of service", Icons.info_outline),
),
],
)
],
))),
),
);
}
_langChange(index) {
var languageModel = Provider.of<LanguageModel>(context);
languageModel.saveLanguage(Translation().supportedLanguages[index]);
setState(() {
isSelected.asMap().forEach((i, e) {
isSelected[i] = false;
});
isSelected[index] = !isSelected[index];
});
}
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,
)
],
),
);
}
}

View File

@@ -1,4 +1,4 @@
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/language_model.dart';
@@ -53,9 +53,10 @@ class _InstructionPageState extends State<InstructionPage> {
),
body: Container(
padding: EdgeInsets.only(left: 5, right: 5, top: 5),
child: Card(elevation: 0,
child: Card(
elevation: 0,
child: Expanded(
child: FittedBox(
child: FittedBox(
child: Image.asset(widget.image), fit: BoxFit.contain),
)),
),

View File

@@ -3,7 +3,7 @@ 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 '../theme/theme.dart';
import '../fcs/common/theme.dart';
class InvitationPage extends StatefulWidget {
@override

View File

@@ -1,6 +1,6 @@
import 'package:fcs/model_fcs/box_model.dart';
import 'package:fcs/model_fcs/package_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/box.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/progress.dart';
@@ -61,7 +61,9 @@ class _BoxAdditionState extends State<BoxAddition> {
icon: Icon(Icons.pages)),
items: boxModel.processed
.map((e) => DropdownMenuItem(
child: Text('${e.shipmentNumber}-${e.receiverNumber} #${e.boxNumber}'), value: e))
child: Text(
'${e.shipmentNumber}-${e.receiverNumber} #${e.boxNumber}'),
value: e))
.toList(),
onChanged: (map) => {},
),

View File

@@ -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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/widget/bottom_up_page_route.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:provider/provider.dart';
@@ -39,7 +39,7 @@ class _InvoiceListState extends State<InvoiceList> {
@override
Widget build(BuildContext context) {
var owner = Provider.of<MainModel>(context).isOwner();
var owner = Provider.of<MainModel>(context).isOwner();
return LocalProgress(
inAsyncCall: _isLoading,
@@ -73,16 +73,19 @@ class _InvoiceListState extends State<InvoiceList> {
],
),
),
floatingActionButton:owner? FloatingActionButton.extended(
onPressed: () {
_newInvoice();
},
icon: Icon(Icons.add),
label: Text(AppTranslations.of(context).text("invoices.add")),
backgroundColor: primaryColor,
):null,
floatingActionButton: owner
? FloatingActionButton.extended(
onPressed: () {
_newInvoice();
},
icon: Icon(Icons.add),
label:
Text(AppTranslations.of(context).text("invoices.add")),
backgroundColor: primaryColor,
)
: null,
body: TabBarView(
children: [ _pending(), _paided()],
children: [_pending(), _paided()],
)),
),
);

View File

@@ -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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/box.dart';
import 'package:fcs/vo/cargo.dart';
import 'package:fcs/vo/invoice.dart';
@@ -173,8 +173,9 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
decoration: InputDecoration(
fillColor: Colors.white,
labelText: 'Invoice Date',
labelStyle:
TextStyle(fontSize: 16,),
labelStyle: TextStyle(
fontSize: 16,
),
filled: true,
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
@@ -194,7 +195,8 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
fillColor: Colors.white,
labelText: 'Invoice Number',
labelStyle: TextStyle(
fontSize: 16,),
fontSize: 16,
),
filled: true,
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
@@ -213,8 +215,9 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
decoration: InputDecoration(
fillColor: Colors.white,
labelText: 'Customer Name',
labelStyle:
TextStyle(fontSize: 16,),
labelStyle: TextStyle(
fontSize: 16,
),
filled: true,
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(
@@ -243,7 +246,8 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
fillColor: Colors.white,
labelText: 'Customer Name',
labelStyle: TextStyle(
fontSize: 16,),
fontSize: 16,
),
filled: true,
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
@@ -288,7 +292,8 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
fillColor: Colors.white,
labelText: 'Status',
labelStyle: TextStyle(
fontSize: 16, ),
fontSize: 16,
),
filled: true,
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
@@ -307,8 +312,9 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
decoration: InputDecoration(
fillColor: Colors.white,
labelText: 'Amount',
labelStyle:
TextStyle(fontSize: 16,),
labelStyle: TextStyle(
fontSize: 16,
),
filled: true,
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
@@ -327,8 +333,9 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
decoration: InputDecoration(
fillColor: Colors.white,
labelText: 'Balance',
labelStyle:
TextStyle(fontSize: 16, ),
labelStyle: TextStyle(
fontSize: 16,
),
filled: true,
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
@@ -347,8 +354,9 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
decoration: InputDecoration(
fillColor: Colors.white,
labelText: 'Handling Fee',
labelStyle:
TextStyle(fontSize: 16,),
labelStyle: TextStyle(
fontSize: 16,
),
filled: true,
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
@@ -367,8 +375,9 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
decoration: InputDecoration(
fillColor: Colors.white,
labelText: 'Customs Fee',
labelStyle:
TextStyle(fontSize: 16,),
labelStyle: TextStyle(
fontSize: 16,
),
filled: true,
icon: Icon(
FontAwesomeIcons.moneyBill,
@@ -388,8 +397,9 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
decoration: InputDecoration(
fillColor: Colors.white,
labelText: 'Customs Fee Description',
labelStyle:
TextStyle(fontSize: 16,),
labelStyle: TextStyle(
fontSize: 16,
),
filled: true,
icon: Icon(
Icons.comment,

View File

@@ -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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/invoice.dart';
import 'package:fcs/widget/bottom_up_page_route.dart';
import 'package:flutter/cupertino.dart';
@@ -132,29 +132,30 @@ class _InvoiceListRowState extends State<InvoiceListRow> {
// padding: const EdgeInsets.all(0),
// child: getStatus(_invoice.status),
// ),
_invoice.status=="Pending"?
Padding(
padding: const EdgeInsets.only(left: 10.0),
child: InkWell(
child: RaisedButton(
child: Row(
children: <Widget>[
Icon(
Icons.payment,
color: primaryColor,
),
Padding(
padding: const EdgeInsets.only(left:8.0),
child: Text("Payment"),
)
],
),
onPressed: () {
Navigator.of(context)
.push(BottomUpPageRoute(PaymentPage(invoice: _invoice)));
},
)),
):Container(),
_invoice.status == "Pending"
? Padding(
padding: const EdgeInsets.only(left: 10.0),
child: InkWell(
child: RaisedButton(
child: Row(
children: <Widget>[
Icon(
Icons.payment,
color: primaryColor,
),
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: Text("Payment"),
)
],
),
onPressed: () {
Navigator.of(context).push(
BottomUpPageRoute(PaymentPage(invoice: _invoice)));
},
)),
)
: Container(),
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: InkWell(

View File

@@ -1,5 +1,5 @@
import 'package:fcs/model_fcs/package_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/package.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/progress.dart';

View File

@@ -1,6 +1,6 @@
import 'package:fcs/model/main_model.dart';
import 'package:fcs/model/pickup_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/package.dart';
import 'package:fcs/widget/label_widgets.dart';
import 'package:fcs/widget/localization/app_translations.dart';
@@ -61,7 +61,9 @@ class _PackageInfoState extends State<PackageInfo> {
padding: EdgeInsets.only(top: 10),
child: Row(
children: <Widget>[
Icon(Icons.calendar_today,),
Icon(
Icons.calendar_today,
),
Padding(
padding: const EdgeInsets.only(right: 8.0, left: 15),
child: labeledText(

View File

@@ -1,6 +1,6 @@
import 'package:fcs/model/main_model.dart';
import 'package:fcs/pages/util.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/invoice.dart';
import 'package:fcs/vo/package.dart';
import 'package:fcs/widget/local_text.dart';

View File

@@ -1,6 +1,6 @@
import 'dart:async';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
@@ -30,7 +30,7 @@ class _PaymentPDFScreenState extends State<PaymentPDFScreen>
return Scaffold(
appBar: AppBar(
backgroundColor: primaryColor,
title:Text("Invoice File"),
title: Text("Invoice File"),
actions: <Widget>[
IconButton(
icon: Icon(Icons.share),

View File

@@ -6,7 +6,7 @@ import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
class LogList extends StatefulWidget {
@override

View File

@@ -10,7 +10,7 @@ import 'package:fcs/widget/bubble_indication_painter.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart' as Theme;
import '../fcs/common/theme.dart' as Theme;
import 'forget_password.dart';
import 'sms_page.dart';
import 'util.dart';
@@ -82,7 +82,7 @@ class _LoginPageState extends State<LoginPage>
: 580.0,
child: Column(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
children: <Widget>[
Padding(
padding: EdgeInsets.only(top: 50.0),
child: _buildMenuBar(context),
@@ -662,14 +662,13 @@ class _LoginPageState extends State<LoginPage>
var phoneNumber = signupPhoneNumberController.text;
try {
await authModel.signup(name, password, confirmPassword, phoneNumber);
Navigator.push(
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
SmsCodePage(id: phoneNumber, password: password),
),
);
} catch (e) {
showMsgDialog(context, "Error", e.toString());
} finally {

View File

@@ -7,7 +7,7 @@ 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/moveable_stack_item.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/manual.dart';
import 'package:path/path.dart' as Path;
import 'package:fcs/widget/progress.dart';

View File

@@ -9,7 +9,7 @@ import 'package:fcs/vo/manual.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/progress.dart';
import '../../theme/theme.dart';
import '../../fcs/common/theme.dart';
import 'slide_page.dart';
class ManualPage extends StatefulWidget {

View File

@@ -1,5 +1,5 @@
import 'package:fcs/model_fcs/message_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/message.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
@@ -82,7 +82,7 @@ class MessageDetail extends StatelessWidget {
@override
Widget build(BuildContext context) {
DateFormat dateFormat=DateFormat("HH:mm");
DateFormat dateFormat = DateFormat("HH:mm");
MessageModel messageModel = Provider.of<MessageModel>(context);
List<Message> messages = messageModel.getMessage(msg.receiverName);
List<Bubble> bubbles = messages

View File

@@ -10,7 +10,7 @@ import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/my_data_table.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import '../widget/localization/app_translations.dart';
import 'my_registeration_item.dart';

View File

@@ -6,7 +6,7 @@ import 'package:fcs/model/reg_model.dart';
import 'package:fcs/widget/label_widgets.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import '../util.dart';
import '../widget/localization/app_translations.dart';
import 'my_registeration.dart';
@@ -50,13 +50,17 @@ class _MyRegisterationInfoState extends State<MyRegisterationInfo> {
labeledText(context, regModel.reg.bizType, "buyer.type_biz");
final statusBox = labeledText(context, regModel.reg.status, "reg.status");
final dailyQuotaBox = labeledText(
context, formatNumber(regModel.reg.dailyQuota), "reg.quota",number: true);
context, formatNumber(regModel.reg.dailyQuota), "reg.quota",
number: true);
final dailyQuotaUsedBox = labeledText(
context, formatNumber(regModel.reg.dailyQuotaUsed), "reg.quota.used",number: true);
context, formatNumber(regModel.reg.dailyQuotaUsed), "reg.quota.used",
number: true);
final maxQuotaBox = labeledText(
context, formatNumber(regModel.reg.maxQuota), "reg.max_quota",number: true);
context, formatNumber(regModel.reg.maxQuota), "reg.max_quota",
number: true);
final maxQuotaUsedBox = labeledText(
context, formatNumber(regModel.reg.maxQuotaUsed), "reg.max_quota.used",number: true);
context, formatNumber(regModel.reg.maxQuotaUsed), "reg.max_quota.used",
number: true);
final nricFrontBox =
labeledImg(context, regModel.reg.nricFrontUrl, "reg_info.nric_front");
final nricBackBox =

View File

@@ -2,7 +2,7 @@ import 'package:flutter/material.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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/buyer.dart';
import 'package:fcs/vo/product.dart';
import 'package:fcs/widget/progress.dart';

View File

@@ -9,7 +9,7 @@ import 'package:fcs/model/notification_model.dart';
import 'package:fcs/vo/notification.dart' as Noti;
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import '../widget/local_text.dart';
class NotificationList extends StatefulWidget {

View File

@@ -9,7 +9,7 @@ import 'package:provider/provider.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
class PaymentMethodEditor extends StatefulWidget {
final PaymentMethod paymentMethod;

View File

@@ -6,7 +6,7 @@ import 'package:fcs/model/main_model.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
class PaymentMethodPage extends StatefulWidget {
@override

View File

@@ -5,7 +5,7 @@ import 'package:fcs/model/language_model.dart';
import 'package:fcs/model/log_model.dart';
import 'package:fcs/model/main_model.dart';
import 'package:fcs/model/pd_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/pd.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/localization/app_translations.dart';
@@ -142,13 +142,11 @@ class _PDFormState extends State<PDForm> {
scrollDirection: Axis.horizontal,
child: MyDataTable(
columns: [
MyDataColumn(
label: LocalText(context, "pd.product")),
MyDataColumn(label: LocalText(context, "pd.product")),
MyDataColumn(
label: LocalText(context, "pd.storage"),
),
MyDataColumn(
label: LocalText(context, "pd.quantity")),
MyDataColumn(label: LocalText(context, "pd.quantity")),
],
rows: getProductRow(pd),
),

View File

@@ -4,7 +4,7 @@ import 'package:provider/provider.dart';
import 'package:fcs/model/language_model.dart';
import 'package:fcs/model/product_model.dart';
import 'package:fcs/model/storage_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/pd.dart';
import 'package:fcs/vo/product.dart';
import 'package:fcs/vo/storage.dart';

View File

@@ -4,7 +4,7 @@ import 'package:provider/provider.dart';
import 'package:fcs/model/language_model.dart';
import 'package:fcs/model/pd_model.dart';
import 'package:fcs/pages/pd/pd_form.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/progress.dart';

View File

@@ -1,7 +1,7 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:fcs/pages/util.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/localization/app_translations.dart';
@@ -16,7 +16,7 @@ class _PhoneEditorState extends State<PhoneEditor> {
@override
void initState() {
super.initState();
_phone.text ='09';
_phone.text = '09';
}
@override

View File

@@ -16,7 +16,7 @@ import 'package:fcs/widget/progress.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import 'shipping_address_editor.dart';
class PickupBoxEditor extends StatefulWidget {

View File

@@ -23,7 +23,7 @@ import 'package:fcs/widget/localization/app_translations.dart';
import 'package:flutter/material.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import 'pickup_box_editor.dart';
class PickUpEditor extends StatefulWidget {

View File

@@ -8,7 +8,7 @@ import 'package:fcs/widget/localization/app_translations.dart';
import 'package:flutter/material.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import 'pickup_editor.dart';
class PickUpList extends StatefulWidget {

View File

@@ -7,7 +7,7 @@ import 'package:flutter_icons/flutter_icons.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/buyer_model.dart';
import 'package:fcs/pages/util.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/buyer.dart';
import 'buyer_info.dart';

View File

@@ -5,7 +5,7 @@ import 'package:flutter_verification_code_input/flutter_verification_code_input.
import 'package:provider/provider.dart';
import 'package:fcs/model/main_model.dart';
import 'package:fcs/pages/util.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:quiver/async.dart';
class PinLoginDialog extends StatefulWidget {

View File

@@ -3,7 +3,7 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/language_model.dart';
import 'package:fcs/model/product_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/po.dart';
import 'package:fcs/vo/product.dart';
import 'package:fcs/widget/local_text.dart';
@@ -62,7 +62,7 @@ class _POItemState extends State<POItem> {
width: 170.0,
child: DropdownButton<String>(
value: currentProductID,
isExpanded: true,
isExpanded: true,
hint: Text(
'Select Product',
style: labelStyle,

View File

@@ -7,7 +7,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/po/po_item.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/attach.dart';
import 'package:fcs/vo/po.dart';
import 'package:fcs/widget/img_file.dart';

View File

@@ -8,7 +8,7 @@ import 'package:fcs/vo/product.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
class ProductEditItem extends StatefulWidget {
final Product product;

View File

@@ -2,7 +2,7 @@ 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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/products.dart';
import 'package:fcs/widget/progress.dart';

View File

@@ -8,7 +8,7 @@ import 'package:fcs/vo/product.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import 'product_edit_item.dart';
class ProductsListEdit extends StatefulWidget {

View File

@@ -6,7 +6,7 @@ import 'package:fcs/pages/util.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
typedef void ProfileCallback();

View File

@@ -1,434 +0,0 @@
import 'package:fcs/model/shipment_model.dart';
import 'package:fcs/pages_fcs/shipping_address_row.dart';
import 'package:fcs/vo/shipping_address.dart';
import 'package:fcs/widget/bottom_up_page_route.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/my_data_table.dart';
import 'package:flutter/material.dart';
import 'package:flutter_icons/flutter_icons.dart';
import 'package:package_info/package_info.dart';
import 'package:provider/provider.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/pages/profile_edit.dart';
import 'package:fcs/pages/util.dart';
import 'package:fcs/vo/role.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/localization/transalation.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import 'profile_setting.dart';
import 'shipping_address_editor.dart';
typedef void ProfileCallback();
class Profile extends StatefulWidget {
@override
_ProfileState createState() => _ProfileState();
}
class _ProfileState extends State<Profile> {
bool _isLoading = false;
String selectedLanguage;
TextEditingController bizNameController = new TextEditingController();
static final List<String> languagesList = Translation().supportedLanguages;
static final List<String> languageCodesList =
Translation().supportedLanguagesCodes;
final Map<dynamic, dynamic> languagesMap = {
languagesList[0]: languageCodesList[0],
languagesList[1]: languageCodesList[1],
};
buildLanguage(LanguageModel languageModel) async {
var lan = await languageModel.load();
if (this.selectedLanguage != lan) {
setState(() {
this.selectedLanguage = lan;
});
}
}
@override
Widget build(BuildContext context) {
var languageModel = Provider.of<LanguageModel>(context);
MainModel mainModel = Provider.of<MainModel>(context);
// buildLanguage(languageModel);
_selectedDropdown(String selected) {
setState(() {
selectedLanguage = selected;
languageModel.saveLanguage(selectedLanguage);
});
}
final namebox = Container(
// padding: EdgeInsets.only(left: 25.0, right: 25.0),
padding: EdgeInsets.only(top: 10, left: 25.0, right: 25.0),
child: Container(
height: 45.0,
child: Row(
children: <Widget>[
Padding(
padding: EdgeInsets.only(left: 0.0),
child: Text(
AppTranslations.of(context).text("profile.name"),
style: languageModel.isEng
? TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.bold,
fontStyle: FontStyle.normal)
: TextStyle(
fontSize: 15.0,
fontWeight: FontWeight.bold,
fontStyle: FontStyle.normal,
fontFamily: "MyanmarUnicode"),
),
),
SizedBox(
width: 30,
),
Container(
child: Center(
child: Text(
mainModel.user == null ? "" : mainModel.user.name,
style:
TextStyle(fontSize: 16.0, fontStyle: FontStyle.normal),
),
),
)
],
),
));
final phonenumberbox = Container(
padding: EdgeInsets.only(left: 25.0, right: 25.0),
height: 45.0,
child: Row(
children: <Widget>[
Padding(
padding: EdgeInsets.only(left: 0.0),
child: Text(
AppTranslations.of(context).text("profile.phone"),
style: languageModel.isEng
? TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.bold,
fontStyle: FontStyle.normal)
: TextStyle(
fontSize: 15.0,
fontWeight: FontWeight.bold,
fontStyle: FontStyle.normal,
fontFamily: "MyanmarUnicode"),
),
),
SizedBox(
width: 27,
),
Container(
child: Center(
child: Text(
mainModel.user == null
? ""
: mainModel.user.phone == null ? '' : mainModel.user.phone,
style: TextStyle(fontSize: 16.0, fontStyle: FontStyle.normal),
),
),
)
],
),
);
final emailBox = Container(
padding: EdgeInsets.only(top: 10, left: 25.0, right: 25.0),
child: Row(
children: <Widget>[
Text(
AppTranslations.of(context).text("profile.email"),
style: languageModel.isEng
? TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.bold,
fontStyle: FontStyle.normal)
: TextStyle(
fontSize: 15.0,
fontWeight: FontWeight.bold,
fontStyle: FontStyle.normal,
fontFamily: "MyanmarUnicode"),
),
SizedBox(
width: 35,
),
Text(
mainModel.user == null
? ""
: mainModel.user.email == null || mainModel.user.email == ''
? ''
: mainModel.user.email,
style: TextStyle(fontSize: 16.0, fontStyle: FontStyle.normal),
),
],
),
);
final languageBox = Container(
padding: EdgeInsets.only(bottom: 0, top: 7, left: 25.0, right: 25.0),
child: Container(
height: 45.0,
child: Row(
children: <Widget>[
Text(
AppTranslations.of(context).text("profile.language"),
style: languageModel.isEng
? TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.bold,
fontStyle: FontStyle.normal)
: TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.bold,
fontStyle: FontStyle.normal,
fontFamily: "MyanmarUnicode"),
),
Container(
width: 140,
padding: EdgeInsets.only(left: 30),
child: Theme(
data: new ThemeData(
canvasColor: Colors.white,
),
child: DropdownButton(
hint: Text("English"),
value: selectedLanguage,
isExpanded: true,
iconSize: 40,
items: languagesList
.map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
onChanged: _selectedDropdown),
)),
],
),
));
final logoutbutton = Container(
padding: EdgeInsets.only(left: 20.0, right: 24.0),
child: Padding(
padding: EdgeInsets.symmetric(vertical: 10.0),
child: Card(
elevation: 23,
child: Container(
height: 45.0,
child: ButtonTheme(
minWidth: 900.0,
height: 100.0,
child: FlatButton.icon(
onPressed: () {
showConfirmDialog(context, "profile.logout.confirm",
() async {
setState(() {
_isLoading = true;
});
await mainModel.logout();
Navigator.of(context).pushNamedAndRemoveUntil(
"/home", ModalRoute.withName('/home'));
Future.delayed(Duration(seconds: 1), () {
if (mounted) {
setState(() {
_isLoading = false;
});
}
});
});
},
label: Text(
AppTranslations.of(context).text("profile.logout"),
style: languageModel.isEng
? TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.bold,
fontStyle: FontStyle.normal)
: TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.bold,
fontStyle: FontStyle.normal,
fontFamily: "MyanmarUnicode")),
icon: Icon(
Icons.exit_to_app,
),
),
),
),
)));
return LocalProgress(
inAsyncCall: _isLoading,
child: Scaffold(
appBar: AppBar(
title: Text(
AppTranslations.of(context).text("profile.title"),
),
backgroundColor: primaryColor,
actions: <Widget>[],
),
body: Column(
children: <Widget>[
Expanded(
child: ListView(
// padding: EdgeInsets.only(left: 25.0, right: 25.0),
shrinkWrap: true,
children: <Widget>[
Row(
children: <Widget>[
namebox,
Padding(
padding: const EdgeInsets.only(left: 18.0),
child: Icon(Icons.edit),
)
],
),
mainModel.isBuyer() ? Container() : getPrivilegeBox(context),
phonenumberbox,
mainModel.user == null
? Container()
: mainModel.user.email == null ||
mainModel.user.email == ''
? Container()
: emailBox,
languageBox,
getShippingAddressList(context),
],
),
),
logoutbutton,
SizedBox(height: 25)
],
),
),
);
}
Widget getShippingAddressList(BuildContext context) {
var shipmentModel = Provider.of<ShipmentModel>(context);
return Container(
padding: EdgeInsets.only(top: 5, left: 10),
child: ExpansionTile(
title: Text(
"My Addresses",
style: TextStyle(
fontWeight: FontWeight.bold, fontStyle: FontStyle.normal),
),
children: <Widget>[
Column(
children: getAddressList(context, shipmentModel.shippingAddresses),
),
Container(
padding: EdgeInsets.only(top: 20, bottom: 15, right: 15),
child: Align(
alignment: Alignment.bottomRight,
child: Container(
width: 130,
height: 40,
child: FloatingActionButton.extended(
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
onPressed: () {
Navigator.push(
context,
BottomUpPageRoute(ShippingAddressEditor()),
);
},
icon: Icon(Icons.add),
label: Text(
'Add New\nAddress',
style: TextStyle(fontSize: 12),
),
backgroundColor: primaryColor,
),
),
),
)
],
),
);
}
List<Widget> getAddressList(
BuildContext context, List<ShippingAddress> addresses) {
return addresses.asMap().entries.map((s) {
return InkWell(
onTap: () {
Navigator.push(
context,
BottomUpPageRoute(ShippingAddressEditor(shippingAddress: s.value)),
);
},
child: ShippingAddressRow(shippingAddress: s.value, index: s.key),
);
}).toList();
}
Widget getPrivilegeBox(BuildContext context) {
var languageModel = Provider.of<LanguageModel>(context);
var userModel = Provider.of<UserModel>(context);
return ListTileTheme(
contentPadding: EdgeInsets.all(0),
child: ExpansionTile(
title: Text(
AppTranslations.of(context).text("profile.privilege"),
style: languageModel.isEng
? TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.bold,
fontStyle: FontStyle.normal,
)
: TextStyle(
fontSize: 15.0,
fontWeight: FontWeight.bold,
fontStyle: FontStyle.normal,
fontFamily: "MyanmarUnicode"),
),
children: <Widget>[
Align(
alignment: Alignment.topLeft,
child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children:
getRowPrivilegeWidget(userModel.getUserPrivileges())),
),
)
],
),
);
}
List<Widget> getRowPrivilegeWidget(List<Privilege> privileges) {
return privileges.map((p) {
return Container(
padding: EdgeInsets.all(8.0),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(p.name,
style: TextStyle(fontSize: 16.0, fontStyle: FontStyle.normal)),
SizedBox(
width: 30,
),
Container(
child: Text(
"- ${p.desc}",
style: TextStyle(fontSize: 16.0, fontStyle: FontStyle.normal),
),
)
],
),
);
}).toList();
}
}

View File

@@ -4,7 +4,7 @@ import 'package:fcs/model/main_model.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import 'add_pin_editor.dart';
import 'block_list.dart';
import 'chage_phone_number.dart';

View File

@@ -2,7 +2,7 @@ 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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/buyer.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/localization/app_translations.dart';

View File

@@ -8,7 +8,7 @@ import 'package:fcs/vo/buyer.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
class QuotaPage extends StatefulWidget {
final Buyer buyer;

View File

@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/language_model.dart';
import 'package:fcs/model/report_user_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/report.dart';
import 'package:fcs/vo/report_user.dart';
import 'package:fcs/vo/user.dart';

View File

@@ -7,7 +7,7 @@ import 'package:fcs/widget/local_text.dart';
import 'package:flutter/material.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import 'report_user_editor.dart';
import 'util.dart';

View File

@@ -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 '../theme/theme.dart' as Theme;
import '../fcs/common/theme.dart' as Theme;
import 'util.dart';
class ResetPasswordPage extends StatefulWidget {
@@ -319,7 +319,7 @@ class _ResetPasswordPageState extends State<ResetPasswordPage>
UserModel userModel = Provider.of<UserModel>(context);
try {
await userModel.resetPassword(widget.phoneNumber, password, smsCode);
Navigator.pushNamedAndRemoveUntil(context, "/login", (r) => false);
Navigator.pushNamedAndRemoveUntil(context, "/login", (r) => false);
} catch (e) {
showMsgDialog(context, "Error", e.toString());
} finally {

View File

@@ -5,7 +5,7 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/buyer_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/buyer.dart';
import 'buyer_list_row.dart';

View File

@@ -4,7 +4,7 @@ import 'package:provider/provider.dart';
import 'package:fcs/model/language_model.dart';
import 'package:fcs/model/main_model.dart';
import 'package:fcs/pages/util.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/setting.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/progress.dart';
@@ -21,7 +21,7 @@ class _SettingEidtorState extends State<SettingEidtor> {
TextEditingController _poExpire = new TextEditingController();
TextEditingController _poOpend = new TextEditingController();
TextEditingController _poClosed = new TextEditingController();
TextEditingController _latestDeliveryDay = new TextEditingController();
TextEditingController _latestDeliveryDay = new TextEditingController();
TextEditingController _firstStorageDay = new TextEditingController();
TextEditingController _firstStorageCharge = new TextEditingController();
TextEditingController _secondStorageDay = new TextEditingController();
@@ -40,7 +40,7 @@ class _SettingEidtorState extends State<SettingEidtor> {
_poExpire.text = widget.setting.poExpireInHours.toString();
_poOpend.text = widget.setting.poOpenAt.toString();
_poClosed.text = widget.setting.poCloseAt.toString();
_latestDeliveryDay.text =widget.setting.latestDeliveryDay.toString();
_latestDeliveryDay.text = widget.setting.latestDeliveryDay.toString();
_firstStorageDay.text = widget.setting.firstStorageChargeIn.toString();
_firstStorageCharge.text = widget.setting.firstStorageCharge.toString();
_secondStorageDay.text = widget.setting.secondStorageChargeIn.toString();
@@ -395,7 +395,7 @@ class _SettingEidtorState extends State<SettingEidtor> {
widget.setting.poExpireInHours = int.parse(_poExpire.text);
widget.setting.poOpenAt = int.parse(_poOpend.text);
widget.setting.poCloseAt = int.parse(_poClosed.text);
widget.setting.latestDeliveryDay=int.parse(_latestDeliveryDay.text);
widget.setting.latestDeliveryDay = int.parse(_latestDeliveryDay.text);
widget.setting.firstStorageChargeIn = int.parse(_firstStorageDay.text);
widget.setting.firstStorageCharge = int.parse(_firstStorageCharge.text);
widget.setting.secondStorageChargeIn = int.parse(_secondStorageDay.text);

View File

@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/main_model.dart';
import 'package:fcs/pages/util.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/setting.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/progress.dart';

View File

@@ -13,7 +13,7 @@ import 'package:fcs/widget/localization/app_translations.dart';
import 'package:flutter/material.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
class ShipmentEditor extends StatefulWidget {
final Shipment shipment;

View File

@@ -9,7 +9,7 @@ import 'package:fcs/widget/localization/app_translations.dart';
import 'package:flutter/material.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import 'shipment_editor.dart';
import 'shipment_list_row.dart';

View File

@@ -1,4 +1,4 @@
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/shipment.dart';
import 'package:fcs/widget/bottom_up_page_route.dart';
import 'package:flutter/material.dart';

View File

@@ -12,7 +12,7 @@ import 'package:fcs/widget/localization/app_translations.dart';
import 'package:flutter/material.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import 'util.dart';
class ShipmentRates extends StatefulWidget {

View File

@@ -6,7 +6,7 @@ import 'package:fcs/widget/localization/app_translations.dart';
import 'package:flutter/material.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
class ShipmentRatesCal extends StatefulWidget {
final PickUp pickUp;

View File

@@ -13,7 +13,7 @@ import 'package:fcs/widget/localization/app_translations.dart';
import 'package:flutter/material.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import 'custom_editor.dart';
import 'discount_by_weight_editor.dart';
import 'util.dart';

View File

@@ -5,7 +5,7 @@ import 'package:flutter_icons/flutter_icons.dart';
import 'package:flutter/material.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
class ShippingAddressEditor extends StatefulWidget {
final ShippingAddress shippingAddress;
@@ -85,7 +85,7 @@ class _ShippingAddressEditorState extends State<ShippingAddressEditor> {
children: <Widget>[
Expanded(
child: Padding(
padding: const EdgeInsets.only(left: 10.0,right: 10),
padding: const EdgeInsets.only(left: 10.0, right: 10),
child: ListView(children: <Widget>[
usaAddress,
SizedBox(height: 10),

View File

@@ -3,7 +3,7 @@ import 'package:progress/progress.dart';
import 'package:provider/provider.dart';
import '../model/main_model.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import '../widget/localization/app_translations.dart';
import '../widget/progress.dart';
import 'util.dart';

View File

@@ -1,149 +0,0 @@
import 'dart:async';
import 'package:fcs/model/main_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:flutter/material.dart';
import 'package:logging/logging.dart';
import 'package:provider/provider.dart';
class SplashScreen extends StatefulWidget {
@override
_SplashScreenState createState() => new _SplashScreenState();
}
class _SplashScreenState extends State<SplashScreen> {
final log = Logger('_SplashScreenState');
bool _loaded = false;
bool _isSupport = false;
bool _isGoogleService = true;
bool _isLogin = false;
bool _isAgree = false;
bool _hasEmail = false;
bool _isOnline = true;
Timer timer;
startTime() async {
var _duration = new Duration(milliseconds: 1000);
this.timer = new Timer.periodic(_duration, navigationPage);
}
void navigationPage(Timer timer) async {
if (!_isOnline) {
return;
}
// GooglePlayServicesAvailability availability = await GoogleApiAvailability
// .instance
// .checkGooglePlayServicesAvailability(true);
// log.info("GooglePlaysServcie Result1:$availability");
// if (availability != GooglePlayServicesAvailability.success &&
// Platform.isAndroid) {
// timer.cancel();
// setState(() {
// _isGoogleService = false;
// });
// return;
// }
if (_loaded) {
timer.cancel();
if (this._isLogin) {
Navigator.of(context).pushReplacementNamed('/homeLogin');
} else {
Navigator.of(context).pushReplacementNamed('/home');
}
// if (_isSupport) {
// if (_isLogin) {
// if (!_isAgree) {
// await Navigator.of(context).pushNamed('/term');
// startTime();
// } else {
// bool skipped = await SharedPref.getSkippedRecoverEmail();
// skipped = skipped ?? false;
// if (!this._hasEmail && !skipped) {
// Navigator.of(context).pushReplacementNamed('/email');
// } else {
// }
// }
// } else {
// Navigator.of(context).pushReplacementNamed('/welcome');
// }
// }
}
}
@override
void initState() {
super.initState();
startTime();
}
void dispose() {
super.dispose();
if (timer.isActive) timer.cancel();
}
@override
Widget build(BuildContext context) {
MainModel mainModel = Provider.of<MainModel>(context);
this._loaded = mainModel.isLoaded;
this._isSupport = true;
this._isLogin = mainModel.isLogin();
// this._isAgree = mainModel.agreedTerm();
this._hasEmail = mainModel.hasEmail();
this._isOnline = mainModel.isOnline;
return new Scaffold(
backgroundColor: Colors.white,
body: new Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Image.asset(
"assets/logo.jpg",
width: 180,
),
SizedBox(height: 50),
Column(
children: <Widget>[
Text(
"Cargo Services",
style: welcomeLabelStyle,
),
Text(
"by FCS Trading",
style: welcomeSubLabelStyle,
),
],
),
// CircularProgressIndicator(
// valueColor: new AlwaysStoppedAnimation<Color>(primaryColor),
// ),
SizedBox(height: 30),
_isOnline
? Container()
: Column(
children: <Widget>[
LocalText(context, "offline.status"),
],
),
Text(_isGoogleService ? "" : "Google Play service not found."),
Text(
_loaded
? (!_isSupport
? "Version outdated, please update your app!"
: "")
: AppTranslations.of(context).text("load"),
style: TextStyle(
color: primaryColor, fontWeight: FontWeight.bold)),
],
),
),
);
}
}

View File

@@ -4,7 +4,7 @@ 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/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/role.dart';
import 'package:fcs/vo/user.dart';
import 'package:fcs/widget/local_text.dart';

View File

@@ -6,10 +6,10 @@ import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/employee_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import '../vo/user.dart';
import '../widget/local_text.dart';
import 'staff_editor.dart';

View File

@@ -5,7 +5,7 @@ import 'package:provider/provider.dart';
import 'package:fcs/model/language_model.dart';
import 'package:fcs/model/product_model.dart';
import 'package:fcs/model/storage_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/inventory_line.dart';
import 'package:fcs/vo/product.dart';
import 'package:fcs/vo/storage.dart';

View File

@@ -3,7 +3,7 @@ import 'package:provider/provider.dart';
import 'package:fcs/model/storage_model.dart';
import 'package:fcs/pages/storage/inventory_item.dart';
import 'package:fcs/pages/util.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/inventory_line.dart';
import 'package:fcs/vo/inventory_taking.dart';
import 'package:fcs/widget/local_text.dart';
@@ -78,10 +78,8 @@ class _TakeInventoryState extends State<TakeInventory> {
scrollDirection: Axis.horizontal,
child: MyDataTable(
columns: [
MyDataColumn(
label: LocalText(context, "inventory.product")),
MyDataColumn(
label: LocalText(context, "inventory.storage")),
MyDataColumn(label: LocalText(context, "inventory.product")),
MyDataColumn(label: LocalText(context, "inventory.storage")),
MyDataColumn(
label: LocalText(context, "inventory.old.qty"),
),

Some files were not shown because too many files have changed in this diff Show More