add signin function
This commit is contained in:
89
lib/app.dart
89
lib/app.dart
@@ -1,22 +1,22 @@
|
|||||||
import 'package:fcs/model/discount_model.dart';
|
import 'package:fcs/fcs/common/pages/signin/model/signin_model.dart';
|
||||||
import 'package:fcs/model/shipment_model.dart';
|
|
||||||
import 'package:fcs/model_fcs/message_model.dart';
|
|
||||||
import 'package:fcs/model_fcs/package_model.dart';
|
|
||||||
import 'package:fcs/vo/message.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_localizations/flutter_localizations.dart';
|
|
||||||
import 'package:provider/provider.dart';
|
|
||||||
import 'package:fcs/model/buyer_model.dart';
|
import 'package:fcs/model/buyer_model.dart';
|
||||||
import 'package:fcs/model/delivery_model.dart';
|
import 'package:fcs/model/delivery_model.dart';
|
||||||
|
import 'package:fcs/model/discount_model.dart';
|
||||||
import 'package:fcs/model/manual_model.dart';
|
import 'package:fcs/model/manual_model.dart';
|
||||||
import 'package:fcs/model/notification_model.dart';
|
import 'package:fcs/model/notification_model.dart';
|
||||||
import 'package:fcs/model/pd_model.dart';
|
import 'package:fcs/model/pd_model.dart';
|
||||||
import 'package:fcs/model/reg_model.dart';
|
import 'package:fcs/model/reg_model.dart';
|
||||||
import 'package:fcs/model/report_model.dart';
|
import 'package:fcs/model/report_model.dart';
|
||||||
|
import 'package:fcs/model/shipment_model.dart';
|
||||||
import 'package:fcs/model/storage_model.dart';
|
import 'package:fcs/model/storage_model.dart';
|
||||||
import 'package:fcs/model/test_model.dart';
|
import 'package:fcs/model/test_model.dart';
|
||||||
|
import 'package:fcs/model_fcs/message_model.dart';
|
||||||
|
import 'package:fcs/model_fcs/package_model.dart';
|
||||||
import 'package:fcs/pages/email_page.dart';
|
import 'package:fcs/pages/email_page.dart';
|
||||||
import 'package:fcs/pages/login_page.dart';
|
import 'package:fcs/pages/login_page.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_localizations/flutter_localizations.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
import 'model/announcement_model.dart';
|
import 'model/announcement_model.dart';
|
||||||
import 'model/chart_model.dart';
|
import 'model/chart_model.dart';
|
||||||
@@ -35,11 +35,10 @@ import 'model/report_user_model.dart';
|
|||||||
import 'model/shipment_rate_model.dart';
|
import 'model/shipment_rate_model.dart';
|
||||||
import 'model/user_model.dart';
|
import 'model/user_model.dart';
|
||||||
import 'model_fcs/box_model.dart';
|
import 'model_fcs/box_model.dart';
|
||||||
import 'pages/home_page.dart';
|
import 'fcs/common/pages/home_page.dart';
|
||||||
import 'pages/home_page_welcome.dart';
|
import 'fcs/common/pages/welcome_page.dart';
|
||||||
import 'pages/splash.dart';
|
import 'fcs/common/pages/splash_page.dart';
|
||||||
import 'pages/term.dart';
|
import 'pages/term.dart';
|
||||||
import 'pages/welcome_page.dart';
|
|
||||||
import 'widget/localization/app_translations_delegate.dart';
|
import 'widget/localization/app_translations_delegate.dart';
|
||||||
import 'widget/localization/transalation.dart';
|
import 'widget/localization/transalation.dart';
|
||||||
|
|
||||||
@@ -131,9 +130,8 @@ class _AppState extends State<App> {
|
|||||||
Map<String, WidgetBuilder> route(BuildContext context) {
|
Map<String, WidgetBuilder> route(BuildContext context) {
|
||||||
final routes = <String, WidgetBuilder>{
|
final routes = <String, WidgetBuilder>{
|
||||||
'/': (_) => SplashScreen(),
|
'/': (_) => SplashScreen(),
|
||||||
'/home': (_) => HomePageWelcome(),
|
'/welcome': (_) => WelcomePage(),
|
||||||
'/homeLogin': (_) => HomePage(),
|
'/home': (_) => HomePage(),
|
||||||
'/welcome': (context) => WelcomePage(),
|
|
||||||
'/term': (context) => Term(
|
'/term': (context) => Term(
|
||||||
agreePage: true,
|
agreePage: true,
|
||||||
),
|
),
|
||||||
@@ -147,38 +145,37 @@ class _AppState extends State<App> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MultiProvider(
|
return MultiProvider(
|
||||||
providers: [
|
providers: [
|
||||||
ChangeNotifierProvider(builder: (context) => mainModel),
|
ChangeNotifierProvider.value(value: mainModel),
|
||||||
ChangeNotifierProvider(builder: (context) => userModel),
|
ChangeNotifierProvider.value(value: userModel),
|
||||||
ChangeNotifierProvider(builder: (context) => productModel),
|
ChangeNotifierProvider.value(value: productModel),
|
||||||
ChangeNotifierProvider(builder: (context) => employeeModel),
|
ChangeNotifierProvider.value(value: employeeModel),
|
||||||
ChangeNotifierProvider(builder: (context) => poSubmissionModel),
|
ChangeNotifierProvider.value(value: poSubmissionModel),
|
||||||
ChangeNotifierProvider(builder: (context) => doModel),
|
ChangeNotifierProvider.value(value: doModel),
|
||||||
ChangeNotifierProvider(builder: (context) => storageModel),
|
ChangeNotifierProvider.value(value: storageModel),
|
||||||
ChangeNotifierProvider(builder: (context) => pdModel),
|
ChangeNotifierProvider.value(value: pdModel),
|
||||||
ChangeNotifierProvider(builder: (context) => lanuguageModel),
|
ChangeNotifierProvider.value(value: lanuguageModel),
|
||||||
ChangeNotifierProvider(builder: (context) => regModel),
|
ChangeNotifierProvider.value(value: regModel),
|
||||||
ChangeNotifierProvider(builder: (context) => buyerModel),
|
ChangeNotifierProvider.value(value: buyerModel),
|
||||||
ChangeNotifierProvider(builder: (context) => notificationModel),
|
ChangeNotifierProvider.value(value: notificationModel),
|
||||||
ChangeNotifierProvider(builder: (context) => chartModel),
|
ChangeNotifierProvider.value(value: chartModel),
|
||||||
ChangeNotifierProvider(builder: (context) => deliveryModel),
|
ChangeNotifierProvider.value(value: deliveryModel),
|
||||||
ChangeNotifierProvider(builder: (context) => manualModel),
|
ChangeNotifierProvider.value(value: logModel),
|
||||||
ChangeNotifierProvider(builder: (context) => logModel),
|
ChangeNotifierProvider.value(value: phoneDeviceModel),
|
||||||
ChangeNotifierProvider(builder: (context) => deliveryModel),
|
ChangeNotifierProvider.value(value: reportModel),
|
||||||
ChangeNotifierProvider(builder: (context) => phoneDeviceModel),
|
ChangeNotifierProvider.value(value: announcementModel),
|
||||||
ChangeNotifierProvider(builder: (context) => reportModel),
|
ChangeNotifierProvider.value(value: reportUserModel),
|
||||||
ChangeNotifierProvider(builder: (context) => announcementModel),
|
ChangeNotifierProvider.value(value: pickUpModel),
|
||||||
ChangeNotifierProvider(builder: (context) => reportUserModel),
|
ChangeNotifierProvider.value(value: shipmentRateModel),
|
||||||
ChangeNotifierProvider(builder: (context) => pickUpModel),
|
ChangeNotifierProvider.value(value: shipmentModel),
|
||||||
ChangeNotifierProvider(builder: (context) => shipmentRateModel),
|
ChangeNotifierProvider.value(value: packageModel),
|
||||||
ChangeNotifierProvider(builder: (context) => shipmentModel),
|
ChangeNotifierProvider.value(value: boxModel),
|
||||||
ChangeNotifierProvider(builder: (context) => packageModel),
|
ChangeNotifierProvider.value(value: messageModel),
|
||||||
ChangeNotifierProvider(builder: (context) => boxModel),
|
ChangeNotifierProvider.value(value: invoiceModel),
|
||||||
ChangeNotifierProvider(builder: (context) => messageModel),
|
ChangeNotifierProvider.value(value: customerModel),
|
||||||
ChangeNotifierProvider(builder: (context) => invoiceModel),
|
ChangeNotifierProvider.value(value: discountModel),
|
||||||
ChangeNotifierProvider(builder: (context) => customerModel),
|
ChangeNotifierProvider.value(value: testModel),
|
||||||
ChangeNotifierProvider(builder: (context) => discountModel),
|
|
||||||
ChangeNotifierProvider(
|
ChangeNotifierProvider(
|
||||||
builder: (context) => testModel,
|
create: (_) => SigninModel(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
child: Consumer<LanguageModel>(
|
child: Consumer<LanguageModel>(
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'package:provider/provider.dart';
|
|||||||
import 'package:fcs/charts/qtyby_customer_table.dart';
|
import 'package:fcs/charts/qtyby_customer_table.dart';
|
||||||
import 'package:fcs/model/chart_model.dart';
|
import 'package:fcs/model/chart_model.dart';
|
||||||
import 'package:fcs/model/product_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/po.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
|
|
||||||
@@ -41,7 +41,8 @@ class _BarChartState extends State<BarChart> {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
this.chartSummary
|
this
|
||||||
|
.chartSummary
|
||||||
.sort((s1, s2) => s1.displayOrder.compareTo(s2.displayOrder));
|
.sort((s1, s2) => s1.displayOrder.compareTo(s2.displayOrder));
|
||||||
}
|
}
|
||||||
List<charts.Series<POChartData, String>> series = [
|
List<charts.Series<POChartData, String>> series = [
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/chart_model.dart';
|
import 'package:fcs/model/chart_model.dart';
|
||||||
import 'package:fcs/theme/theme.dart';
|
import 'package:fcs/fcs/common/theme.dart';
|
||||||
import 'package:fcs/vo/revenue.dart';
|
import 'package:fcs/vo/revenue.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
|
|
||||||
@@ -45,7 +45,8 @@ class _DODeliveryLineChartState extends State<DODeliveryLineChart> {
|
|||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
LocalText(context, "delivery.do.title", color: primaryColor, fontSize: 16),
|
LocalText(context, "delivery.do.title",
|
||||||
|
color: primaryColor, fontSize: 16),
|
||||||
InkWell(
|
InkWell(
|
||||||
child: LocalText(
|
child: LocalText(
|
||||||
context,
|
context,
|
||||||
@@ -54,8 +55,8 @@ class _DODeliveryLineChartState extends State<DODeliveryLineChart> {
|
|||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
),
|
),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Navigator.of(context)
|
Navigator.of(context).push(MaterialPageRoute(
|
||||||
.push(MaterialPageRoute(builder: (_) => DODeliveryLineDetail()));
|
builder: (_) => DODeliveryLineDetail()));
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/chart_model.dart';
|
import 'package:fcs/model/chart_model.dart';
|
||||||
import 'package:fcs/theme/theme.dart';
|
import 'package:fcs/fcs/common/theme.dart';
|
||||||
import 'package:fcs/vo/revenue.dart';
|
import 'package:fcs/vo/revenue.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/my_data_table.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:intl/intl.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/chart_model.dart';
|
import 'package:fcs/model/chart_model.dart';
|
||||||
import 'package:fcs/theme/theme.dart';
|
import 'package:fcs/fcs/common/theme.dart';
|
||||||
import 'package:fcs/vo/revenue.dart';
|
import 'package:fcs/vo/revenue.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/chart_model.dart';
|
import 'package:fcs/model/chart_model.dart';
|
||||||
import 'package:fcs/theme/theme.dart';
|
import 'package:fcs/fcs/common/theme.dart';
|
||||||
import 'package:fcs/vo/revenue.dart';
|
import 'package:fcs/vo/revenue.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/my_data_table.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:intl/intl.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/chart_model.dart';
|
import 'package:fcs/model/chart_model.dart';
|
||||||
import 'package:fcs/theme/theme.dart';
|
import 'package:fcs/fcs/common/theme.dart';
|
||||||
import 'package:fcs/vo/revenue.dart';
|
import 'package:fcs/vo/revenue.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
|
|||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/chart_model.dart';
|
import 'package:fcs/model/chart_model.dart';
|
||||||
import 'package:fcs/model/main_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/vo/revenue.dart';
|
import 'package:fcs/vo/revenue.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/my_data_table.dart';
|
import 'package:fcs/widget/my_data_table.dart';
|
||||||
@@ -56,7 +56,8 @@ class _DeliveryBarDataState extends State<DeliveryBarData> {
|
|||||||
columnSpacing: 100,
|
columnSpacing: 100,
|
||||||
columns: [
|
columns: [
|
||||||
MyDataColumn(label: LocalText(context, "delivery.date")),
|
MyDataColumn(label: LocalText(context, "delivery.date")),
|
||||||
MyDataColumn(label: LocalText(context, "delivery.qty"),numeric: true),
|
MyDataColumn(
|
||||||
|
label: LocalText(context, "delivery.qty"), numeric: true),
|
||||||
],
|
],
|
||||||
rows: getProductRow(chartModel.revenue.getDelivery()),
|
rows: getProductRow(chartModel.revenue.getDelivery()),
|
||||||
),
|
),
|
||||||
@@ -80,9 +81,7 @@ class _DeliveryBarDataState extends State<DeliveryBarData> {
|
|||||||
MyDataCell(
|
MyDataCell(
|
||||||
new Text(dateFormatter.format(d.date), style: textStyle),
|
new Text(dateFormatter.format(d.date), style: textStyle),
|
||||||
),
|
),
|
||||||
MyDataCell(
|
MyDataCell(NumberCell(d.amount)),
|
||||||
NumberCell(d.amount)
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/do_model.dart';
|
import 'package:fcs/model/do_model.dart';
|
||||||
import 'package:fcs/theme/theme.dart';
|
import 'package:fcs/fcs/common/theme.dart';
|
||||||
import 'package:fcs/vo/do.dart';
|
import 'package:fcs/vo/do.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/my_data_table.dart';
|
import 'package:fcs/widget/my_data_table.dart';
|
||||||
@@ -61,7 +61,8 @@ class _DeliveryBarDetailState extends State<DeliveryBarDetail> {
|
|||||||
columns: [
|
columns: [
|
||||||
MyDataColumn(label: LocalText(context, "do.name")),
|
MyDataColumn(label: LocalText(context, "do.name")),
|
||||||
MyDataColumn(label: LocalText(context, "do.do_num")),
|
MyDataColumn(label: LocalText(context, "do.do_num")),
|
||||||
MyDataColumn(label: LocalText(context, "do.quantity"),numeric: true),
|
MyDataColumn(
|
||||||
|
label: LocalText(context, "do.quantity"), numeric: true),
|
||||||
],
|
],
|
||||||
rows: getProductRow(),
|
rows: getProductRow(),
|
||||||
),
|
),
|
||||||
@@ -82,9 +83,7 @@ class _DeliveryBarDetailState extends State<DeliveryBarDetail> {
|
|||||||
MyDataCell(
|
MyDataCell(
|
||||||
new Text(d.doNumber, style: textStyle),
|
new Text(d.doNumber, style: textStyle),
|
||||||
),
|
),
|
||||||
MyDataCell(
|
MyDataCell(NumberCell(d.totalQty)),
|
||||||
NumberCell(d.totalQty)
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/chart_model.dart';
|
import 'package:fcs/model/chart_model.dart';
|
||||||
import 'package:fcs/theme/theme.dart';
|
import 'package:fcs/fcs/common/theme.dart';
|
||||||
import 'package:fcs/vo/revenue.dart';
|
import 'package:fcs/vo/revenue.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'delivery_summary_detail.dart';
|
import 'delivery_summary_detail.dart';
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/chart_model.dart';
|
import 'package:fcs/model/chart_model.dart';
|
||||||
import 'package:fcs/theme/theme.dart';
|
import 'package:fcs/fcs/common/theme.dart';
|
||||||
import 'package:fcs/vo/revenue.dart';
|
import 'package:fcs/vo/revenue.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/my_data_table.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:intl/intl.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/chart_model.dart';
|
import 'package:fcs/model/chart_model.dart';
|
||||||
import 'package:fcs/theme/theme.dart';
|
import 'package:fcs/fcs/common/theme.dart';
|
||||||
import 'package:fcs/vo/po_do_count.dart';
|
import 'package:fcs/vo/po_do_count.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/chart_model.dart';
|
import 'package:fcs/model/chart_model.dart';
|
||||||
import 'package:fcs/theme/theme.dart';
|
import 'package:fcs/fcs/common/theme.dart';
|
||||||
import 'package:fcs/vo/po_do_count.dart';
|
import 'package:fcs/vo/po_do_count.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/my_data_table.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/charts/po_balance_table.dart';
|
||||||
import 'package:fcs/model/chart_model.dart';
|
import 'package:fcs/model/chart_model.dart';
|
||||||
import 'package:fcs/model/product_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/po.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
|
|||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/chart_model.dart';
|
import 'package:fcs/model/chart_model.dart';
|
||||||
import 'package:fcs/model/language_model.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/po.dart';
|
import 'package:fcs/vo/po.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/localization/app_translations.dart';
|
import 'package:fcs/widget/localization/app_translations.dart';
|
||||||
|
|||||||
@@ -3,15 +3,13 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/chart_model.dart';
|
import 'package:fcs/model/chart_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/po.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
|
|
||||||
class POBalanceChart_ extends StatefulWidget {
|
class POBalanceChart_ extends StatefulWidget {
|
||||||
@override
|
@override
|
||||||
_POBalanceChartState createState() => _POBalanceChartState();
|
_POBalanceChartState createState() => _POBalanceChartState();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class _POBalanceChartState extends State<POBalanceChart_> {
|
class _POBalanceChartState extends State<POBalanceChart_> {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
|
|||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/charts/po_line_detail.dart';
|
import 'package:fcs/charts/po_line_detail.dart';
|
||||||
import 'package:fcs/model/chart_model.dart';
|
import 'package:fcs/model/chart_model.dart';
|
||||||
import 'package:fcs/theme/theme.dart';
|
import 'package:fcs/fcs/common/theme.dart';
|
||||||
import 'package:fcs/vo/po_do_count.dart';
|
import 'package:fcs/vo/po_do_count.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:http/http.dart';
|
|||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/chart_model.dart';
|
import 'package:fcs/model/chart_model.dart';
|
||||||
import 'package:fcs/theme/theme.dart';
|
import 'package:fcs/fcs/common/theme.dart';
|
||||||
import 'package:fcs/vo/po_do_count.dart';
|
import 'package:fcs/vo/po_do_count.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/my_data_table.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:provider/provider.dart';
|
||||||
import 'package:fcs/model/chart_model.dart';
|
import 'package:fcs/model/chart_model.dart';
|
||||||
import 'package:fcs/model/language_model.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/po.dart';
|
import 'package:fcs/vo/po.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/localization/app_translations.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:provider/provider.dart';
|
||||||
import 'package:fcs/model/chart_model.dart';
|
import 'package:fcs/model/chart_model.dart';
|
||||||
import 'package:fcs/model/main_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/vo/revenue.dart';
|
import 'package:fcs/vo/revenue.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
|
|||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/chart_model.dart';
|
import 'package:fcs/model/chart_model.dart';
|
||||||
import 'package:fcs/model/main_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/vo/revenue.dart';
|
import 'package:fcs/vo/revenue.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/my_data_table.dart';
|
import 'package:fcs/widget/my_data_table.dart';
|
||||||
@@ -56,7 +56,9 @@ class _RevenueLineDataState extends State<RevenueLineData> {
|
|||||||
columnSpacing: 100,
|
columnSpacing: 100,
|
||||||
columns: [
|
columns: [
|
||||||
MyDataColumn(label: LocalText(context, "revenue.date")),
|
MyDataColumn(label: LocalText(context, "revenue.date")),
|
||||||
MyDataColumn(label: LocalText(context, "revenue.amount"),numeric: true),
|
MyDataColumn(
|
||||||
|
label: LocalText(context, "revenue.amount"),
|
||||||
|
numeric: true),
|
||||||
],
|
],
|
||||||
rows: getProductRow(chartModel.revenue.getData()),
|
rows: getProductRow(chartModel.revenue.getData()),
|
||||||
),
|
),
|
||||||
@@ -70,7 +72,7 @@ class _RevenueLineDataState extends State<RevenueLineData> {
|
|||||||
List<MyDataRow> getProductRow(List<Data> revs) {
|
List<MyDataRow> getProductRow(List<Data> revs) {
|
||||||
return revs.map((p) {
|
return revs.map((p) {
|
||||||
var r = MyDataRow(
|
var r = MyDataRow(
|
||||||
onSelectChanged: (bool selected) async {
|
onSelectChanged: (bool selected) async {
|
||||||
Navigator.push(
|
Navigator.push(
|
||||||
context,
|
context,
|
||||||
MaterialPageRoute(builder: (context) => RevenueLineDetail(p.date)),
|
MaterialPageRoute(builder: (context) => RevenueLineDetail(p.date)),
|
||||||
@@ -80,9 +82,7 @@ class _RevenueLineDataState extends State<RevenueLineData> {
|
|||||||
MyDataCell(
|
MyDataCell(
|
||||||
new Text(dateFormatter.format(p.date), style: textStyle),
|
new Text(dateFormatter.format(p.date), style: textStyle),
|
||||||
),
|
),
|
||||||
MyDataCell(
|
MyDataCell(NumberCell(p.amount)),
|
||||||
NumberCell(p.amount)
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
|
|||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/main_model.dart';
|
import 'package:fcs/model/main_model.dart';
|
||||||
import 'package:fcs/model/po_model.dart';
|
import 'package:fcs/model/po_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/po.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/my_data_table.dart';
|
import 'package:fcs/widget/my_data_table.dart';
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'package:dio/dio.dart';
|
|||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
import 'package:fcs/vo/status.dart';
|
import 'package:fcs/vo/status.dart';
|
||||||
|
|
||||||
import '../config.dart';
|
import '../../config.dart';
|
||||||
|
|
||||||
final log = Logger('requestAPI');
|
final log = Logger('requestAPI');
|
||||||
|
|
||||||
@@ -4,21 +4,29 @@ import 'package:fcs/fcs/common/domain/entities/auth.dart';
|
|||||||
import 'package:fcs/fcs/common/domain/entities/auth_status.dart';
|
import 'package:fcs/fcs/common/domain/entities/auth_status.dart';
|
||||||
import 'package:firebase_auth/firebase_auth.dart';
|
import 'package:firebase_auth/firebase_auth.dart';
|
||||||
|
|
||||||
|
import '../../api_helper.dart';
|
||||||
|
|
||||||
class AuthFb {
|
class AuthFb {
|
||||||
static final AuthFb instance = AuthFb._();
|
static final AuthFb instance = AuthFb._();
|
||||||
AuthFb._();
|
AuthFb._();
|
||||||
|
|
||||||
final FirebaseAuth _fb = FirebaseAuth.instance;
|
static final FirebaseAuth _fb = FirebaseAuth.instance;
|
||||||
|
static FirebaseUser firebaseUser;
|
||||||
static String _verificationId;
|
static String _verificationId;
|
||||||
|
|
||||||
Future<Auth> sendSmsCodeToPhoneNumber(String phoneNumber) {
|
Future<Auth> sendSmsCodeToPhoneNumber(String phoneNumber) {
|
||||||
Completer<Auth> completer = Completer();
|
Completer<Auth> completer = Completer();
|
||||||
|
|
||||||
final PhoneVerificationCompleted verificationCompleted =
|
final PhoneVerificationCompleted verificationCompleted =
|
||||||
(AuthCredential user) {
|
(AuthCredential authCredential) async {
|
||||||
completer.complete(Auth(authStatus: AuthStatus.AUTH_VERIFIED));
|
firebaseUser = await _signIn(authCredential);
|
||||||
|
Auth auth = Auth(authStatus: AuthStatus.AUTH_VERIFIED);
|
||||||
|
auth.uid = firebaseUser.uid;
|
||||||
|
auth.name = await _getName(firebaseUser);
|
||||||
|
auth.phoneNumber = firebaseUser.phoneNumber;
|
||||||
|
completer.complete(auth);
|
||||||
print(
|
print(
|
||||||
'Inside _sendCodeToPhoneNumber: signInWithPhoneNumber auto succeeded: $user');
|
'Inside _sendCodeToPhoneNumber: signInWithPhoneNumber auto succeeded: $firebaseUser');
|
||||||
};
|
};
|
||||||
|
|
||||||
final PhoneVerificationFailed verificationFailed =
|
final PhoneVerificationFailed verificationFailed =
|
||||||
@@ -28,8 +36,7 @@ class AuthFb {
|
|||||||
completer.complete(Auth(
|
completer.complete(Auth(
|
||||||
authStatus: AuthStatus.ERROR,
|
authStatus: AuthStatus.ERROR,
|
||||||
authErrorCode: authException.code,
|
authErrorCode: authException.code,
|
||||||
authErrorMsg: authException.message));
|
authErrorMsg: "Phone number verification failed"));
|
||||||
throw authException;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
final PhoneCodeSent codeSent =
|
final PhoneCodeSent codeSent =
|
||||||
@@ -63,11 +70,10 @@ class AuthFb {
|
|||||||
smsCode: smsCode,
|
smsCode: smsCode,
|
||||||
);
|
);
|
||||||
|
|
||||||
var firebaseUser = await _fb.signInWithCredential(credential);
|
firebaseUser = await _signIn(credential);
|
||||||
final FirebaseUser currentUser = await _fb.currentUser();
|
|
||||||
assert(firebaseUser.user.uid == currentUser.uid);
|
|
||||||
|
|
||||||
auth.uid = firebaseUser.user.uid;
|
auth.uid = firebaseUser.uid;
|
||||||
|
auth.name = await _getName(firebaseUser);
|
||||||
auth.authStatus = AuthStatus.AUTH_VERIFIED;
|
auth.authStatus = AuthStatus.AUTH_VERIFIED;
|
||||||
} on Exception catch (e) {
|
} on Exception catch (e) {
|
||||||
auth.authStatus = AuthStatus.ERROR;
|
auth.authStatus = AuthStatus.ERROR;
|
||||||
@@ -76,7 +82,46 @@ class AuthFb {
|
|||||||
return Future.value(auth);
|
return Future.value(auth);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> logout() {
|
Future<void> signout() {
|
||||||
|
firebaseUser = null;
|
||||||
return _fb.signOut();
|
return _fb.signOut();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<FirebaseUser> _signIn(AuthCredential credential) async {
|
||||||
|
AuthResult _authResult = await _fb.signInWithCredential(credential);
|
||||||
|
FirebaseUser _fusr = _authResult.user;
|
||||||
|
final FirebaseUser firebaseUser = await _fb.currentUser();
|
||||||
|
assert(_fusr.uid == firebaseUser.uid);
|
||||||
|
|
||||||
|
var idToken = await firebaseUser.getIdToken();
|
||||||
|
print("Claims:${idToken.claims}");
|
||||||
|
|
||||||
|
return firebaseUser;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<String> _getName(FirebaseUser firebaseUser) async {
|
||||||
|
IdTokenResult idToken = await firebaseUser.getIdToken();
|
||||||
|
return idToken.claims["name"];
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<bool> hasSignup() async {
|
||||||
|
IdTokenResult idToken = await firebaseUser.getIdToken();
|
||||||
|
return idToken.claims.containsKey("signup") && idToken.claims["signup"];
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> signup(String name) async {
|
||||||
|
await requestAPI("/signup", "POST",
|
||||||
|
payload: {
|
||||||
|
'name': name,
|
||||||
|
},
|
||||||
|
token: await getToken());
|
||||||
|
// refresh token once signup
|
||||||
|
await firebaseUser.getIdToken(refresh: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Future<String> getToken() async {
|
||||||
|
FirebaseUser firebaseUser = await _fb.currentUser();
|
||||||
|
IdTokenResult token = await firebaseUser.getIdToken();
|
||||||
|
return token.token;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ class Auth {
|
|||||||
String authErrorMsg;
|
String authErrorMsg;
|
||||||
|
|
||||||
String uid;
|
String uid;
|
||||||
|
String name;
|
||||||
|
String phoneNumber;
|
||||||
|
|
||||||
Auth({this.authStatus, this.authErrorCode, this.authErrorMsg});
|
Auth({this.authStatus, this.authErrorCode, this.authErrorMsg});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
enum AuthStatus { SMS_SENT, AUTH_VERIFIED, ERROR }
|
enum AuthStatus { SMS_SENT, AUTH_VERIFIED, ERROR, SIGN_OUT }
|
||||||
|
|||||||
@@ -1,74 +1,38 @@
|
|||||||
import 'package:country_code_picker/country_code.dart';
|
import 'package:fcs/model/language_model.dart';
|
||||||
import 'package:fcs/model/main_model.dart';
|
import 'package:fcs/model/main_model.dart';
|
||||||
|
import 'package:fcs/pages/contact.dart';
|
||||||
import 'package:fcs/pages/discount_list.dart';
|
import 'package:fcs/pages/discount_list.dart';
|
||||||
|
import 'package:fcs/pages/notification_list.dart';
|
||||||
import 'package:fcs/pages/payment_method_page.dart';
|
import 'package:fcs/pages/payment_method_page.dart';
|
||||||
import 'package:fcs/pages/shipment_list.dart';
|
import 'package:fcs/pages/shipment_list.dart';
|
||||||
|
import 'package:fcs/pages/term.dart';
|
||||||
import 'package:fcs/pages_fcs/box_list.dart';
|
import 'package:fcs/pages_fcs/box_list.dart';
|
||||||
import 'package:fcs/pages_fcs/delivery_list.dart';
|
import 'package:fcs/pages_fcs/delivery_list.dart';
|
||||||
import 'package:fcs/pages_fcs/package_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/banner.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/bottom_up_page_route.dart';
|
||||||
import 'package:fcs/widget/localization/app_translations.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/offline_redirect.dart';
|
||||||
|
import 'package:fcs/widget/right_left_page_route%20copy.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
|
import 'package:flutter_icons/flutter_icons.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart';
|
import '../../../pages/buying_online.dart';
|
||||||
import 'announcement_list.dart';
|
import '../../../pages/customer_list.dart';
|
||||||
import 'buying_online.dart';
|
import '../../../pages/fcs_profile_page.dart';
|
||||||
import 'customer_list.dart';
|
import '../../../pages/invoice/invoce_list.dart';
|
||||||
import 'do/do_list.dart';
|
import '../../../pages/pickup_list.dart';
|
||||||
import 'invoice/invoce_list.dart';
|
import '../../../pages/shipment_rates.dart';
|
||||||
import 'my_registeration.dart';
|
import '../../../pages/staff_list.dart';
|
||||||
import 'pd/pd_list.dart';
|
import '../theme.dart';
|
||||||
import 'products_list.dart';
|
|
||||||
import 'profile_page.dart';
|
import 'profile_page.dart';
|
||||||
import '../fcs/common/pages/signin/signin_page.dart';
|
import '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');
|
final msgLog = Logger('backgroundMessageHandler');
|
||||||
|
|
||||||
@@ -1,26 +1,21 @@
|
|||||||
import 'package:fcs/model/shipment_model.dart';
|
import 'package:fcs/fcs/common/pages/signin/model/signin_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/language_model.dart';
|
||||||
import 'package:fcs/model/main_model.dart';
|
import 'package:fcs/model/main_model.dart';
|
||||||
|
import 'package:fcs/model/shipment_model.dart';
|
||||||
import 'package:fcs/model/user_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/pages/util.dart';
|
||||||
|
import 'package:fcs/pages_fcs/shipping_address_row.dart';
|
||||||
import 'package:fcs/vo/role.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/app_translations.dart';
|
||||||
import 'package:fcs/widget/localization/transalation.dart';
|
import 'package:fcs/widget/localization/transalation.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart';
|
import '../../../pages/shipping_address_editor.dart';
|
||||||
import 'profile_setting.dart';
|
import '../theme.dart';
|
||||||
import 'shipping_address_editor.dart';
|
|
||||||
|
|
||||||
typedef void ProfileCallback();
|
typedef void ProfileCallback();
|
||||||
|
|
||||||
@@ -235,8 +230,9 @@ class _ProfileState extends State<Profile> {
|
|||||||
_isLoading = true;
|
_isLoading = true;
|
||||||
});
|
});
|
||||||
await mainModel.logout();
|
await mainModel.logout();
|
||||||
|
await context.read<SigninModel>().signout();
|
||||||
Navigator.of(context).pushNamedAndRemoveUntil(
|
Navigator.of(context).pushNamedAndRemoveUntil(
|
||||||
"/home", ModalRoute.withName('/home'));
|
"/welcome", ModalRoute.withName('/welcome'));
|
||||||
Future.delayed(Duration(seconds: 1), () {
|
Future.delayed(Duration(seconds: 1), () {
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
setState(() {
|
setState(() {
|
||||||
@@ -1,17 +1,19 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
|
import 'package:fcs/fcs/common/domain/entities/auth.dart';
|
||||||
|
import 'package:fcs/fcs/common/domain/entities/auth_status.dart';
|
||||||
|
import 'package:fcs/fcs/common/pages/signin/model/signin_model.dart';
|
||||||
import 'package:fcs/model/main_model.dart';
|
import 'package:fcs/model/main_model.dart';
|
||||||
import 'package:fcs/model/shared_pref.dart';
|
import 'package:fcs/pages/util.dart';
|
||||||
import 'package:fcs/vo/user.dart';
|
|
||||||
import 'package:fcs/widget/bottom_up_page_route.dart';
|
import 'package:fcs/widget/bottom_up_page_route.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:pin_input_text_field/pin_input_text_field.dart';
|
import 'package:pin_input_text_field/pin_input_text_field.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
import '../../../../theme/theme.dart';
|
import 'signup_page.dart';
|
||||||
|
import '../../theme.dart';
|
||||||
import '../../../../widget/local_text.dart';
|
import '../../../../widget/local_text.dart';
|
||||||
import '../../../../widget/progress.dart';
|
import '../../../../widget/progress.dart';
|
||||||
import '../../../../pages/user_edit.dart';
|
|
||||||
|
|
||||||
const resend_count_sec = 5;
|
const resend_count_sec = 5;
|
||||||
|
|
||||||
@@ -191,9 +193,21 @@ class _CodePageState extends State<CodePage> {
|
|||||||
_resend() async {}
|
_resend() async {}
|
||||||
|
|
||||||
_verify() async {
|
_verify() async {
|
||||||
Provider.of<MainModel>(context).saveUser(pin, widget.phoneNumber);
|
try {
|
||||||
await Navigator.of(context).push(BottomUpPageRoute(UserEditPage()));
|
Auth auth = await context.read<SigninModel>().signin(this.pin);
|
||||||
Navigator.pop(context);
|
if (auth.authStatus == AuthStatus.AUTH_VERIFIED) {
|
||||||
|
bool hasSignup = await context.read<SigninModel>().hasSignup();
|
||||||
|
if (!hasSignup) {
|
||||||
|
await Navigator.of(context).push(BottomUpPageRoute(SignupPage()));
|
||||||
|
} else {
|
||||||
|
Navigator.pushNamedAndRemoveUntil(context, "/home", (r) => false);
|
||||||
|
}
|
||||||
|
Provider.of<MainModel>(context, listen: false)
|
||||||
|
.saveUser(pin, widget.phoneNumber);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
showMsgDialog(context, "Error", e.toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_completeResend() {
|
_completeResend() {
|
||||||
|
|||||||
@@ -1,8 +1,25 @@
|
|||||||
import 'package:fcs/fcs/common/data/providers/auth_fb.dart';
|
import 'package:fcs/fcs/common/data/providers/auth_fb.dart';
|
||||||
|
import 'package:fcs/fcs/common/domain/entities/auth.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
|
|
||||||
class SigninModel extends ChangeNotifier {
|
class SigninModel extends ChangeNotifier {
|
||||||
setPhoneNumber(String phoneNumber) async {
|
Future<Auth> sendSms(String phoneNumber) {
|
||||||
await AuthFb.instance.sendSmsCodeToPhoneNumber(phoneNumber);
|
return AuthFb.instance.sendSmsCodeToPhoneNumber(phoneNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<Auth> signin(String smsCode) {
|
||||||
|
return AuthFb.instance.signInWithPhoneNumber(smsCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> signout() {
|
||||||
|
return AuthFb.instance.signout();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<bool> hasSignup() {
|
||||||
|
return AuthFb.instance.hasSignup();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> signup(String name) {
|
||||||
|
return AuthFb.instance.signup(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
import 'package:country_code_picker/country_code_picker.dart';
|
import 'package:country_code_picker/country_code_picker.dart';
|
||||||
|
import 'package:fcs/fcs/common/domain/entities/auth.dart';
|
||||||
|
import 'package:fcs/fcs/common/domain/entities/auth_status.dart';
|
||||||
|
import 'package:fcs/fcs/common/pages/signin/model/signin_model.dart';
|
||||||
import 'package:fcs/widget/bottom_up_page_route.dart';
|
import 'package:fcs/widget/bottom_up_page_route.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
import '../../../../theme/theme.dart';
|
import '../../theme.dart';
|
||||||
import '../../../../widget/local_text.dart';
|
import '../../../../widget/local_text.dart';
|
||||||
import '../../../../widget/progress.dart';
|
import '../../../../widget/progress.dart';
|
||||||
import 'code_page.dart';
|
import 'code_page.dart';
|
||||||
@@ -157,19 +161,33 @@ class _SigninPageState extends State<SigninPage> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setState(() {
|
||||||
|
_isLoading = true;
|
||||||
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Exception exp;
|
Exception exp;
|
||||||
phoneNumber = phoneNumber[0] == "0"
|
phoneNumber = phoneNumber[0] == "0"
|
||||||
? phoneNumber.replaceFirst("0", "")
|
? phoneNumber.replaceFirst("0", "")
|
||||||
: phoneNumber;
|
: phoneNumber;
|
||||||
phoneNumber = dialCode + phoneNumber;
|
phoneNumber = dialCode + phoneNumber;
|
||||||
await Navigator.of(context)
|
|
||||||
.push(BottomUpPageRoute(CodePage(phoneNumber: phoneNumber)));
|
Auth auth = await context.read<SigninModel>().sendSms(phoneNumber);
|
||||||
Navigator.pop(context);
|
if (auth.authStatus == AuthStatus.SMS_SENT) {
|
||||||
|
await Navigator.of(context)
|
||||||
|
.push(BottomUpPageRoute(CodePage(phoneNumber: phoneNumber)));
|
||||||
|
Navigator.pop(context);
|
||||||
|
}
|
||||||
|
if (auth.authStatus == AuthStatus.ERROR) {
|
||||||
|
showMsgDialog(context, "Error", auth.authErrorMsg);
|
||||||
|
}
|
||||||
|
|
||||||
if (exp != null) throw exp;
|
if (exp != null) throw exp;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
showMsgDialog(context, "Error", e.toString());
|
showMsgDialog(context, "Error", e.toString());
|
||||||
}
|
}
|
||||||
|
setState(() {
|
||||||
|
_isLoading = false;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,19 @@
|
|||||||
import 'package:fcs/model/shared_pref.dart';
|
import 'package:fcs/fcs/common/pages/signin/model/signin_model.dart';
|
||||||
import 'package:fcs/widget/bottom_up_page_route.dart';
|
|
||||||
import 'package:fcs/widget/localization/app_translations.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart';
|
import '../../../../widget/local_text.dart';
|
||||||
import '../widget/local_text.dart';
|
import '../../../../widget/progress.dart';
|
||||||
import '../widget/progress.dart';
|
import '../../theme.dart';
|
||||||
import 'home_page.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
class UserEditPage extends StatefulWidget {
|
class SignupPage extends StatefulWidget {
|
||||||
@override
|
@override
|
||||||
_UserEditPageState createState() => _UserEditPageState();
|
_SignupPageState createState() => _SignupPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _UserEditPageState extends State<UserEditPage> {
|
class _SignupPageState extends State<SignupPage> {
|
||||||
bool _isLoading = false;
|
bool _isLoading = false;
|
||||||
TextEditingController nameCtl;
|
TextEditingController nameCtl;
|
||||||
|
|
||||||
@@ -110,6 +108,7 @@ class _UserEditPageState extends State<UserEditPage> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_submit() async {
|
_submit() async {
|
||||||
Navigator.pushNamedAndRemoveUntil(context, "/homeLogin", (r) => false);
|
await context.read<SigninModel>().signup(nameCtl.text);
|
||||||
|
Navigator.pushNamedAndRemoveUntil(context, "/home", (r) => false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:fcs/model/main_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/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/localization/app_translations.dart';
|
import 'package:fcs/widget/localization/app_translations.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@@ -51,9 +51,9 @@ class _SplashScreenState extends State<SplashScreen> {
|
|||||||
if (_loaded) {
|
if (_loaded) {
|
||||||
timer.cancel();
|
timer.cancel();
|
||||||
if (this._isLogin) {
|
if (this._isLogin) {
|
||||||
Navigator.of(context).pushReplacementNamed('/homeLogin');
|
|
||||||
} else {
|
|
||||||
Navigator.of(context).pushReplacementNamed('/home');
|
Navigator.of(context).pushReplacementNamed('/home');
|
||||||
|
} else {
|
||||||
|
Navigator.of(context).pushReplacementNamed('/welcome');
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (_isSupport) {
|
// if (_isSupport) {
|
||||||
@@ -13,21 +13,21 @@ import 'package:intl/intl.dart' as intl;
|
|||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart';
|
import '../theme.dart';
|
||||||
import 'profile_page.dart';
|
import 'profile_page.dart';
|
||||||
import '../fcs/common/pages/signin/signin_page.dart';
|
import 'signin/signin_page.dart';
|
||||||
import 'term.dart';
|
import '../../../pages/term.dart';
|
||||||
|
|
||||||
final msgLog = Logger('backgroundMessageHandler');
|
final msgLog = Logger('backgroundMessageHandler');
|
||||||
|
|
||||||
class HomePageWelcome extends StatefulWidget {
|
class WelcomePage extends StatefulWidget {
|
||||||
@override
|
@override
|
||||||
_HomePageWelcomeState createState() => _HomePageWelcomeState();
|
_WelcomePageState createState() => _WelcomePageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef BtnCallback();
|
typedef BtnCallback();
|
||||||
|
|
||||||
class _HomePageWelcomeState extends State<HomePageWelcome> {
|
class _WelcomePageState extends State<WelcomePage> {
|
||||||
final log = Logger('_HomePageWelcomeState');
|
final log = Logger('_HomePageWelcomeState');
|
||||||
bool login = false;
|
bool login = false;
|
||||||
bool customer = true;
|
bool customer = true;
|
||||||
@@ -137,56 +137,54 @@ class _HomePageWelcomeState extends State<HomePageWelcome> {
|
|||||||
Color(0xfa272262),
|
Color(0xfa272262),
|
||||||
], // whitish to gray
|
], // whitish to gray
|
||||||
)),
|
)),
|
||||||
child: Column(
|
child: ListView(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Expanded(
|
Column(
|
||||||
child: Column(
|
children: <Widget>[
|
||||||
children: <Widget>[
|
Padding(
|
||||||
Padding(
|
padding: const EdgeInsets.all(80.0),
|
||||||
padding: const EdgeInsets.all(80.0),
|
child: Text(
|
||||||
child: Text(
|
"Welcome!",
|
||||||
"Welcome!",
|
textAlign: TextAlign.center,
|
||||||
textAlign: TextAlign.center,
|
style: TextStyle(
|
||||||
style: TextStyle(
|
color: Colors.white,
|
||||||
color: Colors.white,
|
fontSize: 28,
|
||||||
fontSize: 28,
|
fontFamily: "Roboto"),
|
||||||
fontFamily: "Roboto"),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
Padding(
|
),
|
||||||
padding: const EdgeInsets.only(top: 0.0),
|
Padding(
|
||||||
child: Text(
|
padding: const EdgeInsets.only(top: 0.0),
|
||||||
"Cargo Services",
|
child: Text(
|
||||||
textAlign: TextAlign.center,
|
"Cargo Services",
|
||||||
style: TextStyle(
|
textAlign: TextAlign.center,
|
||||||
color: Colors.white,
|
style: TextStyle(
|
||||||
fontSize: 28,
|
color: Colors.white,
|
||||||
fontFamily: "Roboto"),
|
fontSize: 28,
|
||||||
),
|
fontFamily: "Roboto"),
|
||||||
),
|
),
|
||||||
Padding(
|
),
|
||||||
padding: const EdgeInsets.all(10.0),
|
Padding(
|
||||||
child: Text(
|
padding: const EdgeInsets.all(10.0),
|
||||||
"by FCS Trading",
|
child: Text(
|
||||||
textAlign: TextAlign.center,
|
"by FCS Trading",
|
||||||
style: TextStyle(
|
textAlign: TextAlign.center,
|
||||||
color: Colors.white,
|
style: TextStyle(
|
||||||
fontSize: 18,
|
color: Colors.white,
|
||||||
fontFamily: "Roboto"),
|
fontSize: 18,
|
||||||
),
|
fontFamily: "Roboto"),
|
||||||
),
|
),
|
||||||
Container(
|
),
|
||||||
padding: EdgeInsets.only(top: 10, bottom: 10),
|
Container(
|
||||||
child: CircleAvatar(
|
padding: EdgeInsets.only(top: 10, bottom: 10),
|
||||||
radius: (50),
|
child: CircleAvatar(
|
||||||
backgroundColor: Colors.white,
|
radius: (50),
|
||||||
child: ClipRRect(
|
backgroundColor: Colors.white,
|
||||||
borderRadius: BorderRadius.circular(50),
|
child: ClipRRect(
|
||||||
child: Image.asset("assets/logo.jpg"),
|
borderRadius: BorderRadius.circular(50),
|
||||||
)),
|
child: Image.asset("assets/logo.jpg"),
|
||||||
),
|
)),
|
||||||
],
|
),
|
||||||
),
|
],
|
||||||
),
|
),
|
||||||
// Row(
|
// Row(
|
||||||
// children: <Widget>[
|
// children: <Widget>[
|
||||||
@@ -241,28 +239,29 @@ class _HomePageWelcomeState extends State<HomePageWelcome> {
|
|||||||
// ),
|
// ),
|
||||||
// ],
|
// ],
|
||||||
// ),
|
// ),
|
||||||
Row(
|
Padding(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
padding: const EdgeInsets.only(top: 28.0),
|
||||||
children: <Widget>[
|
child: Row(
|
||||||
// _buildSmallButton(
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
// "Policies", FontAwesomeIcons.fileContract),
|
children: <Widget>[
|
||||||
InkWell(
|
InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Navigator.of(context).push(
|
Navigator.of(context).push(
|
||||||
MaterialPageRoute(builder: (_) => Contact()));
|
MaterialPageRoute(builder: (_) => Contact()));
|
||||||
},
|
},
|
||||||
child: _buildSmallButton(
|
child: _buildSmallButton(
|
||||||
"Contact Us", SimpleLineIcons.support),
|
"Contact Us", SimpleLineIcons.support),
|
||||||
),
|
),
|
||||||
InkWell(
|
InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Navigator.of(context).push(
|
Navigator.of(context).push(
|
||||||
MaterialPageRoute(builder: (_) => Term()));
|
MaterialPageRoute(builder: (_) => Term()));
|
||||||
},
|
},
|
||||||
child: _buildSmallButton(
|
child: _buildSmallButton(
|
||||||
"Terms of service", Icons.info_outline),
|
"Terms of service", Icons.info_outline),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
))),
|
))),
|
||||||
@@ -285,20 +284,12 @@ class _HomePageWelcomeState extends State<HomePageWelcome> {
|
|||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.all(18.0),
|
padding: const EdgeInsets.all(18.0),
|
||||||
child: Row(
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
IconButton(
|
Padding(
|
||||||
icon: Icon(iconData, color: Colors.white70),
|
padding: const EdgeInsets.only(right: 5),
|
||||||
color: Colors.white70,
|
child: Icon(iconData, color: Colors.white70, size: 18),
|
||||||
onPressed: null),
|
),
|
||||||
// RaisedButton(onPressed: ()=>{},child: Row(
|
|
||||||
// children: <Widget>[
|
|
||||||
// IconButton(
|
|
||||||
// icon: Icon(iconData, ),
|
|
||||||
// onPressed: null),
|
|
||||||
// Text(text),
|
|
||||||
// ],
|
|
||||||
// ),color: Colors.transparent,
|
|
||||||
// focusColor: Colors.transparent,),
|
|
||||||
Text(
|
Text(
|
||||||
text,
|
text,
|
||||||
style: subMenuStyle,
|
style: subMenuStyle,
|
||||||
@@ -31,7 +31,7 @@ class AuthImp implements AuthInterface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<Auth> logout() {
|
Future<Auth> signout() {
|
||||||
return authFb.logout();
|
return authFb.signout();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,5 +3,5 @@ import 'package:fcs/fcs/common/domain/entities/auth.dart';
|
|||||||
abstract class AuthInterface {
|
abstract class AuthInterface {
|
||||||
Future<Auth> sendSmsCodeToPhoneNumber(String phoneNumber);
|
Future<Auth> sendSmsCodeToPhoneNumber(String phoneNumber);
|
||||||
Future<Auth> signInWithSmsCode(String smsCode);
|
Future<Auth> signInWithSmsCode(String smsCode);
|
||||||
Future<Auth> logout();
|
Future<Auth> signout();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ const TextStyle welcomeLabelStyle =
|
|||||||
const TextStyle welcomeSubLabelStyle =
|
const TextStyle welcomeSubLabelStyle =
|
||||||
TextStyle(fontSize: 18, color: primaryColor, fontWeight: FontWeight.w500);
|
TextStyle(fontSize: 18, color: primaryColor, fontWeight: FontWeight.w500);
|
||||||
const TextStyle subMenuStyle =
|
const TextStyle subMenuStyle =
|
||||||
TextStyle(fontSize: 14, color: Colors.white, fontWeight: FontWeight.w500);
|
TextStyle(fontSize: 11, color: Colors.white, fontWeight: FontWeight.w500);
|
||||||
const TextStyle siginButtonStyle =
|
const TextStyle siginButtonStyle =
|
||||||
TextStyle(fontSize: 16, color: Colors.white, fontWeight: FontWeight.w500);
|
TextStyle(fontSize: 16, color: Colors.white, fontWeight: FontWeight.w500);
|
||||||
|
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
|
import 'package:fcs/config.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
import 'package:fcs/config.dart';
|
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
|
||||||
|
|
||||||
import 'app.dart';
|
import 'app.dart';
|
||||||
|
|
||||||
@@ -9,8 +8,7 @@ void main() {
|
|||||||
Config(
|
Config(
|
||||||
flavor: Flavor.DEV,
|
flavor: Flavor.DEV,
|
||||||
color: Colors.blue,
|
color: Colors.blue,
|
||||||
apiURL:
|
apiURL: "http://192.168.100.11:7777",
|
||||||
"https://asia-northeast1-mokkon-wholesale-dev.cloudfunctions.net/APIOK",
|
|
||||||
reportURL: "http://petrok-dev.mokkon.com:8080",
|
reportURL: "http://petrok-dev.mokkon.com:8080",
|
||||||
reportProjectID: "dev",
|
reportProjectID: "dev",
|
||||||
level: Level.ALL);
|
level: Level.ALL);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:fcs/model/api_helper.dart';
|
import 'package:fcs/fcs/common/api_helper.dart';
|
||||||
|
|
||||||
import '../vo/setting.dart';
|
import '../vo/setting.dart';
|
||||||
import '../vo/user.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:cloud_firestore/cloud_firestore.dart';
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
import 'package:fcs/config.dart';
|
import 'package:fcs/config.dart';
|
||||||
import 'package:fcs/theme/theme.dart';
|
import 'package:fcs/fcs/common/theme.dart';
|
||||||
import 'package:fcs/vo/buyer.dart';
|
import 'package:fcs/vo/buyer.dart';
|
||||||
import 'package:fcs/vo/popup_menu.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:cloud_firestore/cloud_firestore.dart';
|
||||||
import 'package:path/path.dart' as Path;
|
import 'package:path/path.dart' as Path;
|
||||||
import 'package:fcs/model/api_helper.dart';
|
import 'package:fcs/fcs/common/api_helper.dart';
|
||||||
import 'package:fcs/model/constants.dart';
|
import 'package:fcs/model/constants.dart';
|
||||||
import 'package:fcs/pages/do/do_files.dart';
|
import 'package:fcs/pages/do/do_files.dart';
|
||||||
import 'package:fcs/vo/do.dart';
|
import 'package:fcs/vo/do.dart';
|
||||||
@@ -27,7 +27,6 @@ class DOModel extends BaseModel {
|
|||||||
_loadDOs();
|
_loadDOs();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
logout() async {
|
logout() async {
|
||||||
if (listener != null) await listener.cancel();
|
if (listener != null) await listener.cancel();
|
||||||
@@ -247,7 +246,8 @@ class DOModel extends BaseModel {
|
|||||||
.where("status", isEqualTo: do_approved_status)
|
.where("status", isEqualTo: do_approved_status)
|
||||||
.where("delivery_date", isGreaterThanOrEqualTo: date)
|
.where("delivery_date", isGreaterThanOrEqualTo: date)
|
||||||
.where("delivery_date", isLessThan: dateAddOne)
|
.where("delivery_date", isLessThan: dateAddOne)
|
||||||
.orderBy("delivery_date").orderBy("user_name")
|
.orderBy("delivery_date")
|
||||||
|
.orderBy("user_name")
|
||||||
.limit(100)
|
.limit(100)
|
||||||
.getDocuments();
|
.getDocuments();
|
||||||
snapshots.documents.forEach((d) {
|
snapshots.documents.forEach((d) {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import 'package:fcs/widget/NetworkConnectivity.dart';
|
|||||||
import '../config.dart';
|
import '../config.dart';
|
||||||
import '../vo/status.dart';
|
import '../vo/status.dart';
|
||||||
import '../vo/user.dart';
|
import '../vo/user.dart';
|
||||||
import 'api_helper.dart';
|
import '../fcs/common/api_helper.dart';
|
||||||
import 'base_model.dart';
|
import 'base_model.dart';
|
||||||
import 'constants.dart';
|
import 'constants.dart';
|
||||||
import 'firebase_helper.dart';
|
import 'firebase_helper.dart';
|
||||||
@@ -97,10 +97,10 @@ class MainModel extends ChangeNotifier {
|
|||||||
phone: '+959123456789',
|
phone: '+959123456789',
|
||||||
mail: 'kbz@gmail.com'),
|
mail: 'kbz@gmail.com'),
|
||||||
PaymentMethod(
|
PaymentMethod(
|
||||||
name: 'PayPal',
|
name: 'PayPal',
|
||||||
accountName: 'FCS',
|
accountName: 'FCS',
|
||||||
link: 'https://www.paypal.com/donate/buttons',
|
link: 'https://www.paypal.com/donate/buttons',
|
||||||
),
|
),
|
||||||
];
|
];
|
||||||
return methods;
|
return methods;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'package:fcs/vo/report.dart';
|
|||||||
import 'package:fcs/vo/report_user.dart';
|
import 'package:fcs/vo/report_user.dart';
|
||||||
import 'package:open_file/open_file.dart';
|
import 'package:open_file/open_file.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:fcs/model/api_helper.dart' as api;
|
import 'package:fcs/fcs/common/api_helper.dart' as api;
|
||||||
import 'package:fcs/vo/report.dart';
|
import 'package:fcs/vo/report.dart';
|
||||||
|
|
||||||
import '../config.dart';
|
import '../config.dart';
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import 'package:fcs/widget/local_text.dart';
|
|||||||
import 'package:fcs/widget/localization/app_translations.dart';
|
import 'package:fcs/widget/localization/app_translations.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart' as Theme;
|
import '../fcs/common/theme.dart' as Theme;
|
||||||
import 'util.dart';
|
import 'util.dart';
|
||||||
|
|
||||||
class AddPINEditor extends StatefulWidget {
|
class AddPINEditor extends StatefulWidget {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import 'package:fcs/widget/popupmenu.dart';
|
|||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
import 'package:zefyr/zefyr.dart';
|
import 'package:zefyr/zefyr.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart';
|
import '../fcs/common/theme.dart';
|
||||||
import 'announcement_editor.dart';
|
import 'announcement_editor.dart';
|
||||||
|
|
||||||
class AnnouncementPage extends StatefulWidget {
|
class AnnouncementPage extends StatefulWidget {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import 'package:provider/provider.dart';
|
|||||||
import 'package:fcs/model/announcement_model.dart';
|
import 'package:fcs/model/announcement_model.dart';
|
||||||
import 'package:fcs/model/language_model.dart';
|
import 'package:fcs/model/language_model.dart';
|
||||||
import 'package:fcs/pages/util.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/vo/announcement.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/localization/app_translations.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/localization/app_translations.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart';
|
import '../fcs/common/theme.dart';
|
||||||
import 'announcement.dart';
|
import 'announcement.dart';
|
||||||
import 'announcement_editor.dart';
|
import 'announcement_editor.dart';
|
||||||
|
|
||||||
@@ -43,15 +43,13 @@ class _AnnouncementListState extends State<AnnouncementList> {
|
|||||||
inAsyncCall: _isLoading,
|
inAsyncCall: _isLoading,
|
||||||
child: Scaffold(
|
child: Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
backgroundColor: primaryColor,
|
backgroundColor: primaryColor,
|
||||||
title:
|
title: LocalText(
|
||||||
LocalText(
|
context,
|
||||||
context,
|
"announcement.title",
|
||||||
"announcement.title",
|
color: Colors.white,
|
||||||
color: Colors.white,
|
fontSize: 20,
|
||||||
fontSize: 20,
|
)),
|
||||||
)
|
|
||||||
),
|
|
||||||
floatingActionButton: isOwnerAndAbove || hasAdmin
|
floatingActionButton: isOwnerAndAbove || hasAdmin
|
||||||
? FloatingActionButton(
|
? FloatingActionButton(
|
||||||
backgroundColor: primaryColor,
|
backgroundColor: primaryColor,
|
||||||
@@ -118,19 +116,22 @@ class _AnnouncementListState extends State<AnnouncementList> {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Column(
|
Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.all(8.0),
|
padding: const EdgeInsets.all(8.0),
|
||||||
child: Text(announce.time==null?"":timeFormatter.format(announce.time)),
|
child: Text(announce.time == null
|
||||||
),
|
? ""
|
||||||
announce.fromToday()
|
: timeFormatter.format(announce.time)),
|
||||||
? Container()
|
),
|
||||||
: Text(announce.time==null?"":dateFormatter.format(announce.time)),
|
announce.fromToday()
|
||||||
],
|
? Container()
|
||||||
)
|
: Text(announce.time == null
|
||||||
|
? ""
|
||||||
|
: dateFormatter.format(announce.time)),
|
||||||
|
],
|
||||||
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import 'package:image_picker/image_picker.dart';
|
|||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/main_model.dart';
|
import 'package:fcs/model/main_model.dart';
|
||||||
import 'package:fcs/pages/util.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/vo/bank_account.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/local_text_field.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:provider/provider.dart';
|
||||||
import 'package:fcs/model/main_model.dart';
|
import 'package:fcs/model/main_model.dart';
|
||||||
import 'package:fcs/pages/banks/bank_edit.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/vo/bank_account.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/progress.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:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/product_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/buyer.dart';
|
import 'package:fcs/vo/buyer.dart';
|
||||||
import 'package:fcs/vo/product.dart';
|
import 'package:fcs/vo/product.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/user_model.dart';
|
import 'package:fcs/model/user_model.dart';
|
||||||
import 'package:fcs/pages/util.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/popup_menu.dart';
|
||||||
import 'package:fcs/vo/user.dart';
|
import 'package:fcs/vo/user.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import 'package:fcs/widget/label_widgets.dart';
|
|||||||
import 'package:fcs/widget/localization/app_translations.dart';
|
import 'package:fcs/widget/localization/app_translations.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart';
|
import '../fcs/common/theme.dart';
|
||||||
import 'document_log_page.dart';
|
import 'document_log_page.dart';
|
||||||
|
|
||||||
class BuyerInfo extends StatefulWidget {
|
class BuyerInfo extends StatefulWidget {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import 'package:fcs/widget/popupmenu.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart';
|
import '../fcs/common/theme.dart';
|
||||||
import 'buyer_list_row.dart';
|
import 'buyer_list_row.dart';
|
||||||
|
|
||||||
class BuyerList extends StatefulWidget {
|
class BuyerList extends StatefulWidget {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/buyer_model.dart';
|
import 'package:fcs/model/buyer_model.dart';
|
||||||
import 'package:fcs/pages/util.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 'package:fcs/vo/buyer.dart';
|
||||||
|
|
||||||
import 'buyer_info.dart';
|
import 'buyer_info.dart';
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import 'package:fcs/model/main_model.dart';
|
|||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart';
|
import '../fcs/common/theme.dart';
|
||||||
import '../widget/label_widgets.dart';
|
import '../widget/label_widgets.dart';
|
||||||
import '../widget/local_text.dart';
|
import '../widget/local_text.dart';
|
||||||
import 'instruction.dart';
|
import 'instruction.dart';
|
||||||
|
|||||||
@@ -6,17 +6,19 @@ import 'package:fcs/widget/localization/app_translations.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart';
|
import '../fcs/common/theme.dart';
|
||||||
|
|
||||||
class CalculateShipmentCostEditor extends StatefulWidget {
|
class CalculateShipmentCostEditor extends StatefulWidget {
|
||||||
final PickUp pickUp;
|
final PickUp pickUp;
|
||||||
CalculateShipmentCostEditor({this.pickUp});
|
CalculateShipmentCostEditor({this.pickUp});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_CalculateShipmentCostEditorState createState() => _CalculateShipmentCostEditorState();
|
_CalculateShipmentCostEditorState createState() =>
|
||||||
|
_CalculateShipmentCostEditorState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _CalculateShipmentCostEditorState extends State<CalculateShipmentCostEditor> {
|
class _CalculateShipmentCostEditorState
|
||||||
|
extends State<CalculateShipmentCostEditor> {
|
||||||
TextEditingController _addressEditingController = new TextEditingController();
|
TextEditingController _addressEditingController = new TextEditingController();
|
||||||
TextEditingController _fromTimeEditingController =
|
TextEditingController _fromTimeEditingController =
|
||||||
new TextEditingController();
|
new TextEditingController();
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import 'package:fcs/widget/local_text.dart';
|
|||||||
import 'package:fcs/widget/localization/app_translations.dart';
|
import 'package:fcs/widget/localization/app_translations.dart';
|
||||||
import 'package:fcs/widget/progress.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 'confirm_email.dart';
|
||||||
import 'util.dart';
|
import 'util.dart';
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import 'package:fcs/widget/local_text.dart';
|
|||||||
import 'package:fcs/widget/localization/app_translations.dart';
|
import 'package:fcs/widget/localization/app_translations.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart' as Theme;
|
import '../fcs/common/theme.dart' as Theme;
|
||||||
import 'util.dart';
|
import 'util.dart';
|
||||||
|
|
||||||
class ChangePassword extends StatefulWidget {
|
class ChangePassword extends StatefulWidget {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/user_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/widget/localization/app_translations.dart';
|
import 'package:fcs/widget/localization/app_translations.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ class _ConfirmEmailState extends State<ConfirmEmail> {
|
|||||||
try {
|
try {
|
||||||
await userModel.confirmEmail(
|
await userModel.confirmEmail(
|
||||||
widget.id, widget.email, widget.phoneNumber, _sms.text);
|
widget.id, widget.email, widget.phoneNumber, _sms.text);
|
||||||
Navigator.pushNamedAndRemoveUntil(context, "/home", (r) => false);
|
Navigator.pushNamedAndRemoveUntil(context, "/welcome", (r) => false);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
showMsgDialog(context, "Error", e.toString());
|
showMsgDialog(context, "Error", e.toString());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import 'package:provider/provider.dart';
|
|||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
import 'package:fcs/model/main_model.dart';
|
import 'package:fcs/model/main_model.dart';
|
||||||
import 'package:fcs/pages/util.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/local_text.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import 'package:fcs/model/language_model.dart';
|
|||||||
import 'package:fcs/model/main_model.dart';
|
import 'package:fcs/model/main_model.dart';
|
||||||
import 'package:fcs/pages/phone_input.dart';
|
import 'package:fcs/pages/phone_input.dart';
|
||||||
import 'package:fcs/pages/util.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/vo/setting.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/local_text_field.dart';
|
import 'package:fcs/widget/local_text_field.dart';
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:fcs/widget/localization/app_translations.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
import '../theme/theme.dart';
|
import '../fcs/common/theme.dart';
|
||||||
|
|
||||||
class CustomEditor extends StatefulWidget {
|
class CustomEditor extends StatefulWidget {
|
||||||
final Custom custom;
|
final Custom custom;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:fcs/model/employee_model.dart';
|
|||||||
import 'package:fcs/model/language_model.dart';
|
import 'package:fcs/model/language_model.dart';
|
||||||
import 'package:fcs/model/main_model.dart';
|
import 'package:fcs/model/main_model.dart';
|
||||||
import 'package:fcs/model/user_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/role.dart';
|
||||||
import 'package:fcs/vo/user.dart';
|
import 'package:fcs/vo/user.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import 'package:flutter_icons/flutter_icons.dart';
|
|||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
|
|
||||||
import 'package:provider/provider.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 'package:fcs/widget/progress.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart';
|
import '../fcs/common/theme.dart';
|
||||||
import '../vo/user.dart';
|
import '../vo/user.dart';
|
||||||
import '../widget/local_text.dart';
|
import '../widget/local_text.dart';
|
||||||
import 'customer_editor.dart';
|
import 'customer_editor.dart';
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import 'package:fcs/model/main_model.dart';
|
|||||||
import 'package:fcs/model/po_model.dart';
|
import 'package:fcs/model/po_model.dart';
|
||||||
import 'package:fcs/model/product_model.dart';
|
import 'package:fcs/model/product_model.dart';
|
||||||
import 'package:fcs/pages/do/photo_page.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/do.dart';
|
||||||
import 'package:fcs/widget/img_file.dart';
|
import 'package:fcs/widget/img_file.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
@@ -425,8 +425,8 @@ class _DeliveryItemState extends State<DeliveryItem> {
|
|||||||
label: LocalText(context, "do.storage"),
|
label: LocalText(context, "do.storage"),
|
||||||
),
|
),
|
||||||
MyDataColumn(
|
MyDataColumn(
|
||||||
label: LocalText(context, "do.quantity"),numeric: true
|
label: LocalText(context, "do.quantity"),
|
||||||
),
|
numeric: true),
|
||||||
],
|
],
|
||||||
rows: getProductRow(doObj.doLines),
|
rows: getProductRow(doObj.doLines),
|
||||||
),
|
),
|
||||||
@@ -446,7 +446,7 @@ class _DeliveryItemState extends State<DeliveryItem> {
|
|||||||
|
|
||||||
List<MyDataRow> getProductRow(List<DOLine> doLines) {
|
List<MyDataRow> getProductRow(List<DOLine> doLines) {
|
||||||
ProductModel productModel = Provider.of<ProductModel>(context);
|
ProductModel productModel = Provider.of<ProductModel>(context);
|
||||||
if (doLines.isNotEmpty) {
|
if (doLines.isNotEmpty) {
|
||||||
doLines.forEach((d) {
|
doLines.forEach((d) {
|
||||||
productModel.products.forEach((p) {
|
productModel.products.forEach((p) {
|
||||||
if (p.id == d.productID) {
|
if (p.id == d.productID) {
|
||||||
@@ -471,9 +471,7 @@ class _DeliveryItemState extends State<DeliveryItem> {
|
|||||||
MyDataCell(
|
MyDataCell(
|
||||||
new Text(d.storageName, style: textStyle),
|
new Text(d.storageName, style: textStyle),
|
||||||
),
|
),
|
||||||
MyDataCell(
|
MyDataCell(NumberCell(d.qty)),
|
||||||
NumberCell(d.qty)
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}).toList();
|
}).toList();
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import 'package:fcs/model/language_model.dart';
|
|||||||
import 'package:fcs/model/main_model.dart';
|
import 'package:fcs/model/main_model.dart';
|
||||||
import 'package:fcs/pages/delivery/delivery_item.dart';
|
import 'package:fcs/pages/delivery/delivery_item.dart';
|
||||||
import 'package:fcs/pages/util.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/popup_menu.dart';
|
||||||
import 'package:fcs/widget/localization/app_translations.dart';
|
import 'package:fcs/widget/localization/app_translations.dart';
|
||||||
import 'package:fcs/widget/popupmenu.dart';
|
import 'package:fcs/widget/popupmenu.dart';
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import 'package:fcs/widget/local_text.dart';
|
|||||||
import 'package:fcs/widget/popupmenu.dart';
|
import 'package:fcs/widget/popupmenu.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart';
|
import '../fcs/common/theme.dart';
|
||||||
import 'util.dart';
|
import 'util.dart';
|
||||||
|
|
||||||
class PhoneDeviceList extends StatefulWidget {
|
class PhoneDeviceList extends StatefulWidget {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import 'package:fcs/widget/localization/app_translations.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
import '../theme/theme.dart';
|
import '../fcs/common/theme.dart';
|
||||||
|
|
||||||
class DiscountByWeightEditor extends StatefulWidget {
|
class DiscountByWeightEditor extends StatefulWidget {
|
||||||
final Discount discount;
|
final Discount discount;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import 'package:provider/provider.dart';
|
|||||||
import 'package:fcs/widget/localization/app_translations.dart';
|
import 'package:fcs/widget/localization/app_translations.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart';
|
import '../fcs/common/theme.dart';
|
||||||
|
|
||||||
class DiscountEditor extends StatefulWidget {
|
class DiscountEditor extends StatefulWidget {
|
||||||
final Discount discount;
|
final Discount discount;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import 'package:provider/provider.dart';
|
|||||||
import 'package:fcs/widget/localization/app_translations.dart';
|
import 'package:fcs/widget/localization/app_translations.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart';
|
import '../fcs/common/theme.dart';
|
||||||
|
|
||||||
class DiscountList extends StatefulWidget {
|
class DiscountList extends StatefulWidget {
|
||||||
@override
|
@override
|
||||||
@@ -95,7 +95,8 @@ class _DiscountListState extends State<DiscountList> {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.end,
|
crossAxisAlignment: CrossAxisAlignment.end,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(left: 10.0,bottom: 5.0),
|
padding:
|
||||||
|
const EdgeInsets.only(left: 10.0, bottom: 5.0),
|
||||||
child: Text(
|
child: Text(
|
||||||
'\$ ${discount.amount.toString()}',
|
'\$ ${discount.amount.toString()}',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import 'package:fcs/model/main_model.dart';
|
|||||||
import 'package:fcs/model/po_model.dart';
|
import 'package:fcs/model/po_model.dart';
|
||||||
import 'package:fcs/model/product_model.dart';
|
import 'package:fcs/model/product_model.dart';
|
||||||
import 'package:fcs/pages/do/photo_page.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/do.dart';
|
||||||
import 'package:fcs/vo/po.dart';
|
import 'package:fcs/vo/po.dart';
|
||||||
import 'package:fcs/widget/img_file.dart';
|
import 'package:fcs/widget/img_file.dart';
|
||||||
@@ -539,8 +539,9 @@ class _DOApprovalState extends State<DOApproval> {
|
|||||||
label: LocalText(context, "do.storage"),
|
label: LocalText(context, "do.storage"),
|
||||||
),
|
),
|
||||||
MyDataColumn(
|
MyDataColumn(
|
||||||
label: LocalText(context, "do.quantity"),numeric: true
|
label:
|
||||||
),
|
LocalText(context, "do.quantity"),
|
||||||
|
numeric: true),
|
||||||
],
|
],
|
||||||
rows: getProductRow(doObj.doLines),
|
rows: getProductRow(doObj.doLines),
|
||||||
),
|
),
|
||||||
@@ -633,16 +634,20 @@ class _DOApprovalState extends State<DOApproval> {
|
|||||||
MyDataColumn(label: LocalText(context, "po.number")),
|
MyDataColumn(label: LocalText(context, "po.number")),
|
||||||
MyDataColumn(label: LocalText(context, "po.product")),
|
MyDataColumn(label: LocalText(context, "po.product")),
|
||||||
MyDataColumn(
|
MyDataColumn(
|
||||||
label: LocalText(context, "do.po_qty"),numeric: true,
|
label: LocalText(context, "do.po_qty"),
|
||||||
|
numeric: true,
|
||||||
),
|
),
|
||||||
MyDataColumn(
|
MyDataColumn(
|
||||||
label: LocalText(context, "do.po_balance_qty"),numeric: true,
|
label: LocalText(context, "do.po_balance_qty"),
|
||||||
|
numeric: true,
|
||||||
),
|
),
|
||||||
MyDataColumn(
|
MyDataColumn(
|
||||||
label: LocalText(context, "po.retrieved.amount"),numeric: true,
|
label: LocalText(context, "po.retrieved.amount"),
|
||||||
|
numeric: true,
|
||||||
),
|
),
|
||||||
MyDataColumn(
|
MyDataColumn(
|
||||||
label: LocalText(context, "do.do_qty"),numeric: true,
|
label: LocalText(context, "do.do_qty"),
|
||||||
|
numeric: true,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
rows: getPOProductRow(),
|
rows: getPOProductRow(),
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import 'package:fcs/model/po_model.dart';
|
|||||||
import 'package:fcs/model/product_model.dart';
|
import 'package:fcs/model/product_model.dart';
|
||||||
import 'package:fcs/pages/do/do_product_item.dart';
|
import 'package:fcs/pages/do/do_product_item.dart';
|
||||||
import 'package:fcs/pages/util.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/do.dart';
|
||||||
import 'package:fcs/vo/po.dart';
|
import 'package:fcs/vo/po.dart';
|
||||||
import 'package:fcs/widget/img_file.dart';
|
import 'package:fcs/widget/img_file.dart';
|
||||||
@@ -415,9 +415,7 @@ class _DOFormState extends State<DOForm> {
|
|||||||
columns: [
|
columns: [
|
||||||
MyDataColumn(label: LocalText(context, "do.product")),
|
MyDataColumn(label: LocalText(context, "do.product")),
|
||||||
MyDataColumn(
|
MyDataColumn(
|
||||||
label: LocalText(context, "po.avail.qty"),
|
label: LocalText(context, "po.avail.qty"), numeric: true),
|
||||||
numeric: true
|
|
||||||
),
|
|
||||||
MyDataColumn(
|
MyDataColumn(
|
||||||
label: LocalText(context, "do.do_qty"),
|
label: LocalText(context, "do.do_qty"),
|
||||||
numeric: true,
|
numeric: true,
|
||||||
@@ -464,19 +462,17 @@ class _DOFormState extends State<DOForm> {
|
|||||||
style: textStyle,
|
style: textStyle,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
MyDataCell(
|
MyDataCell(NumberCell(d.poBalQty)),
|
||||||
NumberCell(d.poBalQty)
|
|
||||||
),
|
|
||||||
MyDataCell(
|
MyDataCell(
|
||||||
Container(
|
Container(
|
||||||
color: Colors.cyan,
|
color: Colors.cyan,
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.end,
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
new Text(d.qty == null ? "0" : d.qty.toString(),
|
new Text(d.qty == null ? "0" : d.qty.toString(),
|
||||||
style: textStyle),
|
style: textStyle),
|
||||||
],
|
],
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@@ -504,16 +500,20 @@ class _DOFormState extends State<DOForm> {
|
|||||||
MyDataColumn(label: LocalText(context, "po.number")),
|
MyDataColumn(label: LocalText(context, "po.number")),
|
||||||
MyDataColumn(label: LocalText(context, "po.product")),
|
MyDataColumn(label: LocalText(context, "po.product")),
|
||||||
MyDataColumn(
|
MyDataColumn(
|
||||||
label: LocalText(context, "do.po_qty"),numeric: true,
|
label: LocalText(context, "do.po_qty"),
|
||||||
|
numeric: true,
|
||||||
),
|
),
|
||||||
MyDataColumn(
|
MyDataColumn(
|
||||||
label: LocalText(context, "po.avail.qty"),numeric: true,
|
label: LocalText(context, "po.avail.qty"),
|
||||||
|
numeric: true,
|
||||||
),
|
),
|
||||||
MyDataColumn(
|
MyDataColumn(
|
||||||
label: LocalText(context, "po.retrieved.amount"),numeric: true,
|
label: LocalText(context, "po.retrieved.amount"),
|
||||||
|
numeric: true,
|
||||||
),
|
),
|
||||||
MyDataColumn(
|
MyDataColumn(
|
||||||
label: LocalText(context, "do.do_qty"),numeric: true,
|
label: LocalText(context, "do.do_qty"),
|
||||||
|
numeric: true,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
rows: getPOProductRow(),
|
rows: getPOProductRow(),
|
||||||
@@ -540,8 +540,8 @@ class _DOFormState extends State<DOForm> {
|
|||||||
});
|
});
|
||||||
|
|
||||||
doSubmission.dopoLies.sort((p1, p2) {
|
doSubmission.dopoLies.sort((p1, p2) {
|
||||||
if (p1.displayOrder!=p2.displayOrder)
|
if (p1.displayOrder != p2.displayOrder)
|
||||||
return p1.displayOrder.compareTo(p2.displayOrder);
|
return p1.displayOrder.compareTo(p2.displayOrder);
|
||||||
return p1.poNumber.compareTo(p2.poNumber);
|
return p1.poNumber.compareTo(p2.poNumber);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -560,15 +560,9 @@ class _DOFormState extends State<DOForm> {
|
|||||||
style: textStyle,
|
style: textStyle,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
MyDataCell(
|
MyDataCell(NumberCell(d.poQty)),
|
||||||
NumberCell(d.poQty)
|
MyDataCell(NumberCell(d.poBalQty)),
|
||||||
),
|
MyDataCell(NumberCell(d.getPoBalanceQty)),
|
||||||
MyDataCell(
|
|
||||||
NumberCell(d.poBalQty)
|
|
||||||
),
|
|
||||||
MyDataCell(
|
|
||||||
NumberCell(d.getPoBalanceQty)
|
|
||||||
),
|
|
||||||
MyDataCell(
|
MyDataCell(
|
||||||
Container(
|
Container(
|
||||||
color: Colors.grey,
|
color: Colors.grey,
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:provider/provider.dart';
|
|||||||
import 'package:fcs/model/language_model.dart';
|
import 'package:fcs/model/language_model.dart';
|
||||||
import 'package:fcs/model/po_model.dart';
|
import 'package:fcs/model/po_model.dart';
|
||||||
import 'package:fcs/pages/util.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/do.dart';
|
||||||
import 'package:fcs/vo/po.dart';
|
import 'package:fcs/vo/po.dart';
|
||||||
import 'package:fcs/widget/img_file.dart';
|
import 'package:fcs/widget/img_file.dart';
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'package:fcs/model/language_model.dart';
|
|||||||
import 'package:fcs/model/main_model.dart';
|
import 'package:fcs/model/main_model.dart';
|
||||||
import 'package:fcs/pages/do/do_creation_form.dart';
|
import 'package:fcs/pages/do/do_creation_form.dart';
|
||||||
import 'package:fcs/pages/util.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/popup_menu.dart';
|
||||||
import 'package:fcs/widget/localization/app_translations.dart';
|
import 'package:fcs/widget/localization/app_translations.dart';
|
||||||
import 'package:fcs/widget/popupmenu.dart';
|
import 'package:fcs/widget/popupmenu.dart';
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
|||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/language_model.dart';
|
import 'package:fcs/model/language_model.dart';
|
||||||
import 'package:fcs/pages/util.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/do.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/localization/app_translations.dart';
|
import 'package:fcs/widget/localization/app_translations.dart';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/storage_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/util.dart';
|
import 'package:fcs/util.dart';
|
||||||
import 'package:fcs/vo/do.dart';
|
import 'package:fcs/vo/do.dart';
|
||||||
import 'package:fcs/vo/storage.dart';
|
import 'package:fcs/vo/storage.dart';
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:image_picker/image_picker.dart';
|
import 'package:image_picker/image_picker.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/language_model.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 'package:fcs/widget/localization/app_translations.dart';
|
||||||
|
|
||||||
import '../util.dart';
|
import '../util.dart';
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import 'package:flutter/material.dart';
|
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/vo/po.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:intl/intl.dart';
|
|||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/log_model.dart';
|
import 'package:fcs/model/log_model.dart';
|
||||||
import 'package:fcs/model/user_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/document_log.dart';
|
||||||
import 'package:fcs/vo/role.dart';
|
import 'package:fcs/vo/role.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:fcs/model/language_model.dart';
|
|||||||
import 'package:fcs/model/main_model.dart';
|
import 'package:fcs/model/main_model.dart';
|
||||||
import 'package:fcs/model/shared_pref.dart';
|
import 'package:fcs/model/shared_pref.dart';
|
||||||
import 'package:fcs/model/user_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/user.dart';
|
import 'package:fcs/vo/user.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/localization/app_translations.dart';
|
import 'package:fcs/widget/localization/app_translations.dart';
|
||||||
@@ -82,7 +82,8 @@ class _EmailPageState extends State<EmailPage> {
|
|||||||
child: InkWell(
|
child: InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
SharedPref.saveSkippedRecoverEmail(true);
|
SharedPref.saveSkippedRecoverEmail(true);
|
||||||
Navigator.pushNamedAndRemoveUntil(context, "/home", (r) => false);
|
Navigator.pushNamedAndRemoveUntil(
|
||||||
|
context, "/welcome", (r) => false);
|
||||||
},
|
},
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.end,
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import 'package:provider/provider.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart';
|
import '../fcs/common/theme.dart';
|
||||||
|
|
||||||
class FCSProfilePage extends StatefulWidget {
|
class FCSProfilePage extends StatefulWidget {
|
||||||
final PickUp pickUp;
|
final PickUp pickUp;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:provider/provider.dart';
|
|||||||
import 'package:fcs/model/main_model.dart';
|
import 'package:fcs/model/main_model.dart';
|
||||||
import 'package:fcs/model/user_model.dart';
|
import 'package:fcs/model/user_model.dart';
|
||||||
import 'package:fcs/pages/reset_password.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/local_text.dart';
|
||||||
import 'package:fcs/widget/localization/app_translations.dart';
|
import 'package:fcs/widget/localization/app_translations.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import 'package:fcs/theme/theme.dart';
|
import 'package:fcs/fcs/common/theme.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/language_model.dart';
|
import 'package:fcs/model/language_model.dart';
|
||||||
@@ -53,9 +53,10 @@ class _InstructionPageState extends State<InstructionPage> {
|
|||||||
),
|
),
|
||||||
body: Container(
|
body: Container(
|
||||||
padding: EdgeInsets.only(left: 5, right: 5, top: 5),
|
padding: EdgeInsets.only(left: 5, right: 5, top: 5),
|
||||||
child: Card(elevation: 0,
|
child: Card(
|
||||||
|
elevation: 0,
|
||||||
child: Expanded(
|
child: Expanded(
|
||||||
child: FittedBox(
|
child: FittedBox(
|
||||||
child: Image.asset(widget.image), fit: BoxFit.contain),
|
child: Image.asset(widget.image), fit: BoxFit.contain),
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:fcs/widget/localization/app_translations.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
import '../theme/theme.dart';
|
import '../fcs/common/theme.dart';
|
||||||
|
|
||||||
class InvitationPage extends StatefulWidget {
|
class InvitationPage extends StatefulWidget {
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import 'package:fcs/model_fcs/box_model.dart';
|
import 'package:fcs/model_fcs/box_model.dart';
|
||||||
import 'package:fcs/model_fcs/package_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/vo/box.dart';
|
||||||
import 'package:fcs/widget/localization/app_translations.dart';
|
import 'package:fcs/widget/localization/app_translations.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
@@ -61,7 +61,9 @@ class _BoxAdditionState extends State<BoxAddition> {
|
|||||||
icon: Icon(Icons.pages)),
|
icon: Icon(Icons.pages)),
|
||||||
items: boxModel.processed
|
items: boxModel.processed
|
||||||
.map((e) => DropdownMenuItem(
|
.map((e) => DropdownMenuItem(
|
||||||
child: Text('${e.shipmentNumber}-${e.receiverNumber} #${e.boxNumber}'), value: e))
|
child: Text(
|
||||||
|
'${e.shipmentNumber}-${e.receiverNumber} #${e.boxNumber}'),
|
||||||
|
value: e))
|
||||||
.toList(),
|
.toList(),
|
||||||
onChanged: (map) => {},
|
onChanged: (map) => {},
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:fcs/model/main_model.dart';
|
|||||||
import 'package:fcs/model/shipment_model.dart';
|
import 'package:fcs/model/shipment_model.dart';
|
||||||
import 'package:fcs/model_fcs/package_model.dart';
|
import 'package:fcs/model_fcs/package_model.dart';
|
||||||
import 'package:fcs/pages_fcs/package_list_row.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/bottom_up_page_route.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
@@ -39,7 +39,7 @@ class _InvoiceListState extends State<InvoiceList> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
var owner = Provider.of<MainModel>(context).isOwner();
|
var owner = Provider.of<MainModel>(context).isOwner();
|
||||||
|
|
||||||
return LocalProgress(
|
return LocalProgress(
|
||||||
inAsyncCall: _isLoading,
|
inAsyncCall: _isLoading,
|
||||||
@@ -73,16 +73,19 @@ class _InvoiceListState extends State<InvoiceList> {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
floatingActionButton:owner? FloatingActionButton.extended(
|
floatingActionButton: owner
|
||||||
onPressed: () {
|
? FloatingActionButton.extended(
|
||||||
_newInvoice();
|
onPressed: () {
|
||||||
},
|
_newInvoice();
|
||||||
icon: Icon(Icons.add),
|
},
|
||||||
label: Text(AppTranslations.of(context).text("invoices.add")),
|
icon: Icon(Icons.add),
|
||||||
backgroundColor: primaryColor,
|
label:
|
||||||
):null,
|
Text(AppTranslations.of(context).text("invoices.add")),
|
||||||
|
backgroundColor: primaryColor,
|
||||||
|
)
|
||||||
|
: null,
|
||||||
body: TabBarView(
|
body: TabBarView(
|
||||||
children: [ _pending(), _paided()],
|
children: [_pending(), _paided()],
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import 'package:fcs/model/discount_model.dart';
|
|||||||
import 'package:fcs/model/main_model.dart';
|
import 'package:fcs/model/main_model.dart';
|
||||||
import 'package:fcs/model_fcs/box_model.dart';
|
import 'package:fcs/model_fcs/box_model.dart';
|
||||||
import 'package:fcs/pages/invoice/package_addition.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/box.dart';
|
||||||
import 'package:fcs/vo/cargo.dart';
|
import 'package:fcs/vo/cargo.dart';
|
||||||
import 'package:fcs/vo/invoice.dart';
|
import 'package:fcs/vo/invoice.dart';
|
||||||
@@ -173,8 +173,9 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
|
|||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
fillColor: Colors.white,
|
fillColor: Colors.white,
|
||||||
labelText: 'Invoice Date',
|
labelText: 'Invoice Date',
|
||||||
labelStyle:
|
labelStyle: TextStyle(
|
||||||
TextStyle(fontSize: 16,),
|
fontSize: 16,
|
||||||
|
),
|
||||||
filled: true,
|
filled: true,
|
||||||
enabledBorder: InputBorder.none,
|
enabledBorder: InputBorder.none,
|
||||||
focusedBorder: InputBorder.none,
|
focusedBorder: InputBorder.none,
|
||||||
@@ -194,7 +195,8 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
|
|||||||
fillColor: Colors.white,
|
fillColor: Colors.white,
|
||||||
labelText: 'Invoice Number',
|
labelText: 'Invoice Number',
|
||||||
labelStyle: TextStyle(
|
labelStyle: TextStyle(
|
||||||
fontSize: 16,),
|
fontSize: 16,
|
||||||
|
),
|
||||||
filled: true,
|
filled: true,
|
||||||
enabledBorder: InputBorder.none,
|
enabledBorder: InputBorder.none,
|
||||||
focusedBorder: InputBorder.none,
|
focusedBorder: InputBorder.none,
|
||||||
@@ -213,8 +215,9 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
|
|||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
fillColor: Colors.white,
|
fillColor: Colors.white,
|
||||||
labelText: 'Customer Name',
|
labelText: 'Customer Name',
|
||||||
labelStyle:
|
labelStyle: TextStyle(
|
||||||
TextStyle(fontSize: 16,),
|
fontSize: 16,
|
||||||
|
),
|
||||||
filled: true,
|
filled: true,
|
||||||
focusedBorder: UnderlineInputBorder(
|
focusedBorder: UnderlineInputBorder(
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
@@ -243,7 +246,8 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
|
|||||||
fillColor: Colors.white,
|
fillColor: Colors.white,
|
||||||
labelText: 'Customer Name',
|
labelText: 'Customer Name',
|
||||||
labelStyle: TextStyle(
|
labelStyle: TextStyle(
|
||||||
fontSize: 16,),
|
fontSize: 16,
|
||||||
|
),
|
||||||
filled: true,
|
filled: true,
|
||||||
enabledBorder: InputBorder.none,
|
enabledBorder: InputBorder.none,
|
||||||
focusedBorder: InputBorder.none,
|
focusedBorder: InputBorder.none,
|
||||||
@@ -288,7 +292,8 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
|
|||||||
fillColor: Colors.white,
|
fillColor: Colors.white,
|
||||||
labelText: 'Status',
|
labelText: 'Status',
|
||||||
labelStyle: TextStyle(
|
labelStyle: TextStyle(
|
||||||
fontSize: 16, ),
|
fontSize: 16,
|
||||||
|
),
|
||||||
filled: true,
|
filled: true,
|
||||||
enabledBorder: InputBorder.none,
|
enabledBorder: InputBorder.none,
|
||||||
focusedBorder: InputBorder.none,
|
focusedBorder: InputBorder.none,
|
||||||
@@ -307,8 +312,9 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
|
|||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
fillColor: Colors.white,
|
fillColor: Colors.white,
|
||||||
labelText: 'Amount',
|
labelText: 'Amount',
|
||||||
labelStyle:
|
labelStyle: TextStyle(
|
||||||
TextStyle(fontSize: 16,),
|
fontSize: 16,
|
||||||
|
),
|
||||||
filled: true,
|
filled: true,
|
||||||
enabledBorder: InputBorder.none,
|
enabledBorder: InputBorder.none,
|
||||||
focusedBorder: InputBorder.none,
|
focusedBorder: InputBorder.none,
|
||||||
@@ -327,8 +333,9 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
|
|||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
fillColor: Colors.white,
|
fillColor: Colors.white,
|
||||||
labelText: 'Balance',
|
labelText: 'Balance',
|
||||||
labelStyle:
|
labelStyle: TextStyle(
|
||||||
TextStyle(fontSize: 16, ),
|
fontSize: 16,
|
||||||
|
),
|
||||||
filled: true,
|
filled: true,
|
||||||
enabledBorder: InputBorder.none,
|
enabledBorder: InputBorder.none,
|
||||||
focusedBorder: InputBorder.none,
|
focusedBorder: InputBorder.none,
|
||||||
@@ -347,8 +354,9 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
|
|||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
fillColor: Colors.white,
|
fillColor: Colors.white,
|
||||||
labelText: 'Handling Fee',
|
labelText: 'Handling Fee',
|
||||||
labelStyle:
|
labelStyle: TextStyle(
|
||||||
TextStyle(fontSize: 16,),
|
fontSize: 16,
|
||||||
|
),
|
||||||
filled: true,
|
filled: true,
|
||||||
enabledBorder: InputBorder.none,
|
enabledBorder: InputBorder.none,
|
||||||
focusedBorder: InputBorder.none,
|
focusedBorder: InputBorder.none,
|
||||||
@@ -367,8 +375,9 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
|
|||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
fillColor: Colors.white,
|
fillColor: Colors.white,
|
||||||
labelText: 'Customs Fee',
|
labelText: 'Customs Fee',
|
||||||
labelStyle:
|
labelStyle: TextStyle(
|
||||||
TextStyle(fontSize: 16,),
|
fontSize: 16,
|
||||||
|
),
|
||||||
filled: true,
|
filled: true,
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
FontAwesomeIcons.moneyBill,
|
FontAwesomeIcons.moneyBill,
|
||||||
@@ -388,8 +397,9 @@ class _InvoiceEditorState extends State<InvoiceEditor> {
|
|||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
fillColor: Colors.white,
|
fillColor: Colors.white,
|
||||||
labelText: 'Customs Fee Description',
|
labelText: 'Customs Fee Description',
|
||||||
labelStyle:
|
labelStyle: TextStyle(
|
||||||
TextStyle(fontSize: 16,),
|
fontSize: 16,
|
||||||
|
),
|
||||||
filled: true,
|
filled: true,
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
Icons.comment,
|
Icons.comment,
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'dart:io';
|
|||||||
|
|
||||||
import 'package:fcs/model/main_model.dart';
|
import 'package:fcs/model/main_model.dart';
|
||||||
import 'package:fcs/pages/invoice/payment_pdf_screen.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/vo/invoice.dart';
|
||||||
import 'package:fcs/widget/bottom_up_page_route.dart';
|
import 'package:fcs/widget/bottom_up_page_route.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
@@ -132,29 +132,30 @@ class _InvoiceListRowState extends State<InvoiceListRow> {
|
|||||||
// padding: const EdgeInsets.all(0),
|
// padding: const EdgeInsets.all(0),
|
||||||
// child: getStatus(_invoice.status),
|
// child: getStatus(_invoice.status),
|
||||||
// ),
|
// ),
|
||||||
_invoice.status=="Pending"?
|
_invoice.status == "Pending"
|
||||||
Padding(
|
? Padding(
|
||||||
padding: const EdgeInsets.only(left: 10.0),
|
padding: const EdgeInsets.only(left: 10.0),
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
child: RaisedButton(
|
child: RaisedButton(
|
||||||
child: Row(
|
child: Row(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Icon(
|
Icon(
|
||||||
Icons.payment,
|
Icons.payment,
|
||||||
color: primaryColor,
|
color: primaryColor,
|
||||||
),
|
),
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(left:8.0),
|
padding: const EdgeInsets.only(left: 8.0),
|
||||||
child: Text("Payment"),
|
child: Text("Payment"),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Navigator.of(context)
|
Navigator.of(context).push(
|
||||||
.push(BottomUpPageRoute(PaymentPage(invoice: _invoice)));
|
BottomUpPageRoute(PaymentPage(invoice: _invoice)));
|
||||||
},
|
},
|
||||||
)),
|
)),
|
||||||
):Container(),
|
)
|
||||||
|
: Container(),
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(left: 8.0),
|
padding: const EdgeInsets.only(left: 8.0),
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import 'package:fcs/model_fcs/package_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/package.dart';
|
import 'package:fcs/vo/package.dart';
|
||||||
import 'package:fcs/widget/localization/app_translations.dart';
|
import 'package:fcs/widget/localization/app_translations.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import 'package:fcs/model/main_model.dart';
|
import 'package:fcs/model/main_model.dart';
|
||||||
import 'package:fcs/model/pickup_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/vo/package.dart';
|
||||||
import 'package:fcs/widget/label_widgets.dart';
|
import 'package:fcs/widget/label_widgets.dart';
|
||||||
import 'package:fcs/widget/localization/app_translations.dart';
|
import 'package:fcs/widget/localization/app_translations.dart';
|
||||||
@@ -61,7 +61,9 @@ class _PackageInfoState extends State<PackageInfo> {
|
|||||||
padding: EdgeInsets.only(top: 10),
|
padding: EdgeInsets.only(top: 10),
|
||||||
child: Row(
|
child: Row(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Icon(Icons.calendar_today,),
|
Icon(
|
||||||
|
Icons.calendar_today,
|
||||||
|
),
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(right: 8.0, left: 15),
|
padding: const EdgeInsets.only(right: 8.0, left: 15),
|
||||||
child: labeledText(
|
child: labeledText(
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import 'package:fcs/model/main_model.dart';
|
import 'package:fcs/model/main_model.dart';
|
||||||
import 'package:fcs/pages/util.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/invoice.dart';
|
||||||
import 'package:fcs/vo/package.dart';
|
import 'package:fcs/vo/package.dart';
|
||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import 'dart:async';
|
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:fcs/widget/local_text.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@@ -30,7 +30,7 @@ class _PaymentPDFScreenState extends State<PaymentPDFScreen>
|
|||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
backgroundColor: primaryColor,
|
backgroundColor: primaryColor,
|
||||||
title:Text("Invoice File"),
|
title: Text("Invoice File"),
|
||||||
actions: <Widget>[
|
actions: <Widget>[
|
||||||
IconButton(
|
IconButton(
|
||||||
icon: Icon(Icons.share),
|
icon: Icon(Icons.share),
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'package:fcs/widget/local_text.dart';
|
|||||||
import 'package:fcs/widget/localization/app_translations.dart';
|
import 'package:fcs/widget/localization/app_translations.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart';
|
import '../fcs/common/theme.dart';
|
||||||
|
|
||||||
class LogList extends StatefulWidget {
|
class LogList extends StatefulWidget {
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import 'package:fcs/widget/bubble_indication_painter.dart';
|
|||||||
import 'package:fcs/widget/localization/app_translations.dart';
|
import 'package:fcs/widget/localization/app_translations.dart';
|
||||||
import 'package:fcs/widget/progress.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 'forget_password.dart';
|
||||||
import 'sms_page.dart';
|
import 'sms_page.dart';
|
||||||
import 'util.dart';
|
import 'util.dart';
|
||||||
@@ -662,14 +662,13 @@ class _LoginPageState extends State<LoginPage>
|
|||||||
var phoneNumber = signupPhoneNumberController.text;
|
var phoneNumber = signupPhoneNumberController.text;
|
||||||
try {
|
try {
|
||||||
await authModel.signup(name, password, confirmPassword, phoneNumber);
|
await authModel.signup(name, password, confirmPassword, phoneNumber);
|
||||||
Navigator.push(
|
Navigator.push(
|
||||||
context,
|
context,
|
||||||
MaterialPageRoute(
|
MaterialPageRoute(
|
||||||
builder: (context) =>
|
builder: (context) =>
|
||||||
SmsCodePage(id: phoneNumber, password: password),
|
SmsCodePage(id: phoneNumber, password: password),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
showMsgDialog(context, "Error", e.toString());
|
showMsgDialog(context, "Error", e.toString());
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import 'package:fcs/model/language_model.dart';
|
|||||||
import 'package:fcs/model/main_model.dart';
|
import 'package:fcs/model/main_model.dart';
|
||||||
import 'package:fcs/model/manual_model.dart';
|
import 'package:fcs/model/manual_model.dart';
|
||||||
import 'package:fcs/pages/manual/moveable_stack_item.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:fcs/vo/manual.dart';
|
||||||
import 'package:path/path.dart' as Path;
|
import 'package:path/path.dart' as Path;
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import 'package:fcs/vo/manual.dart';
|
|||||||
import 'package:fcs/widget/local_text.dart';
|
import 'package:fcs/widget/local_text.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|
||||||
import '../../theme/theme.dart';
|
import '../../fcs/common/theme.dart';
|
||||||
import 'slide_page.dart';
|
import 'slide_page.dart';
|
||||||
|
|
||||||
class ManualPage extends StatefulWidget {
|
class ManualPage extends StatefulWidget {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import 'package:fcs/model_fcs/message_model.dart';
|
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:fcs/vo/message.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
@@ -82,7 +82,7 @@ class MessageDetail extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
DateFormat dateFormat=DateFormat("HH:mm");
|
DateFormat dateFormat = DateFormat("HH:mm");
|
||||||
MessageModel messageModel = Provider.of<MessageModel>(context);
|
MessageModel messageModel = Provider.of<MessageModel>(context);
|
||||||
List<Message> messages = messageModel.getMessage(msg.receiverName);
|
List<Message> messages = messageModel.getMessage(msg.receiverName);
|
||||||
List<Bubble> bubbles = messages
|
List<Bubble> bubbles = messages
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import 'package:fcs/widget/local_text.dart';
|
|||||||
import 'package:fcs/widget/my_data_table.dart';
|
import 'package:fcs/widget/my_data_table.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart';
|
import '../fcs/common/theme.dart';
|
||||||
import '../widget/localization/app_translations.dart';
|
import '../widget/localization/app_translations.dart';
|
||||||
import 'my_registeration_item.dart';
|
import 'my_registeration_item.dart';
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'package:fcs/model/reg_model.dart';
|
|||||||
import 'package:fcs/widget/label_widgets.dart';
|
import 'package:fcs/widget/label_widgets.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|
||||||
import '../theme/theme.dart';
|
import '../fcs/common/theme.dart';
|
||||||
import '../util.dart';
|
import '../util.dart';
|
||||||
import '../widget/localization/app_translations.dart';
|
import '../widget/localization/app_translations.dart';
|
||||||
import 'my_registeration.dart';
|
import 'my_registeration.dart';
|
||||||
@@ -50,13 +50,17 @@ class _MyRegisterationInfoState extends State<MyRegisterationInfo> {
|
|||||||
labeledText(context, regModel.reg.bizType, "buyer.type_biz");
|
labeledText(context, regModel.reg.bizType, "buyer.type_biz");
|
||||||
final statusBox = labeledText(context, regModel.reg.status, "reg.status");
|
final statusBox = labeledText(context, regModel.reg.status, "reg.status");
|
||||||
final dailyQuotaBox = labeledText(
|
final dailyQuotaBox = labeledText(
|
||||||
context, formatNumber(regModel.reg.dailyQuota), "reg.quota",number: true);
|
context, formatNumber(regModel.reg.dailyQuota), "reg.quota",
|
||||||
|
number: true);
|
||||||
final dailyQuotaUsedBox = labeledText(
|
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(
|
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(
|
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 =
|
final nricFrontBox =
|
||||||
labeledImg(context, regModel.reg.nricFrontUrl, "reg_info.nric_front");
|
labeledImg(context, regModel.reg.nricFrontUrl, "reg_info.nric_front");
|
||||||
final nricBackBox =
|
final nricBackBox =
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:fcs/model/product_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/buyer.dart';
|
import 'package:fcs/vo/buyer.dart';
|
||||||
import 'package:fcs/vo/product.dart';
|
import 'package:fcs/vo/product.dart';
|
||||||
import 'package:fcs/widget/progress.dart';
|
import 'package:fcs/widget/progress.dart';
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user