add signin function

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

View File

@@ -1,22 +1,22 @@
import 'package:fcs/model/discount_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/fcs/common/pages/signin/model/signin_model.dart';
import 'package:fcs/model/buyer_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/notification_model.dart';
import 'package:fcs/model/pd_model.dart';
import 'package:fcs/model/reg_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/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/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/chart_model.dart';
@@ -35,11 +35,10 @@ import 'model/report_user_model.dart';
import 'model/shipment_rate_model.dart';
import 'model/user_model.dart';
import 'model_fcs/box_model.dart';
import 'pages/home_page.dart';
import 'pages/home_page_welcome.dart';
import 'pages/splash.dart';
import 'fcs/common/pages/home_page.dart';
import 'fcs/common/pages/welcome_page.dart';
import 'fcs/common/pages/splash_page.dart';
import 'pages/term.dart';
import 'pages/welcome_page.dart';
import 'widget/localization/app_translations_delegate.dart';
import 'widget/localization/transalation.dart';
@@ -131,9 +130,8 @@ class _AppState extends State<App> {
Map<String, WidgetBuilder> route(BuildContext context) {
final routes = <String, WidgetBuilder>{
'/': (_) => SplashScreen(),
'/home': (_) => HomePageWelcome(),
'/homeLogin': (_) => HomePage(),
'/welcome': (context) => WelcomePage(),
'/welcome': (_) => WelcomePage(),
'/home': (_) => HomePage(),
'/term': (context) => Term(
agreePage: true,
),
@@ -147,38 +145,37 @@ class _AppState extends State<App> {
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(builder: (context) => mainModel),
ChangeNotifierProvider(builder: (context) => userModel),
ChangeNotifierProvider(builder: (context) => productModel),
ChangeNotifierProvider(builder: (context) => employeeModel),
ChangeNotifierProvider(builder: (context) => poSubmissionModel),
ChangeNotifierProvider(builder: (context) => doModel),
ChangeNotifierProvider(builder: (context) => storageModel),
ChangeNotifierProvider(builder: (context) => pdModel),
ChangeNotifierProvider(builder: (context) => lanuguageModel),
ChangeNotifierProvider(builder: (context) => regModel),
ChangeNotifierProvider(builder: (context) => buyerModel),
ChangeNotifierProvider(builder: (context) => notificationModel),
ChangeNotifierProvider(builder: (context) => chartModel),
ChangeNotifierProvider(builder: (context) => deliveryModel),
ChangeNotifierProvider(builder: (context) => manualModel),
ChangeNotifierProvider(builder: (context) => logModel),
ChangeNotifierProvider(builder: (context) => deliveryModel),
ChangeNotifierProvider(builder: (context) => phoneDeviceModel),
ChangeNotifierProvider(builder: (context) => reportModel),
ChangeNotifierProvider(builder: (context) => announcementModel),
ChangeNotifierProvider(builder: (context) => reportUserModel),
ChangeNotifierProvider(builder: (context) => pickUpModel),
ChangeNotifierProvider(builder: (context) => shipmentRateModel),
ChangeNotifierProvider(builder: (context) => shipmentModel),
ChangeNotifierProvider(builder: (context) => packageModel),
ChangeNotifierProvider(builder: (context) => boxModel),
ChangeNotifierProvider(builder: (context) => messageModel),
ChangeNotifierProvider(builder: (context) => invoiceModel),
ChangeNotifierProvider(builder: (context) => customerModel),
ChangeNotifierProvider(builder: (context) => discountModel),
ChangeNotifierProvider.value(value: mainModel),
ChangeNotifierProvider.value(value: userModel),
ChangeNotifierProvider.value(value: productModel),
ChangeNotifierProvider.value(value: employeeModel),
ChangeNotifierProvider.value(value: poSubmissionModel),
ChangeNotifierProvider.value(value: doModel),
ChangeNotifierProvider.value(value: storageModel),
ChangeNotifierProvider.value(value: pdModel),
ChangeNotifierProvider.value(value: lanuguageModel),
ChangeNotifierProvider.value(value: regModel),
ChangeNotifierProvider.value(value: buyerModel),
ChangeNotifierProvider.value(value: notificationModel),
ChangeNotifierProvider.value(value: chartModel),
ChangeNotifierProvider.value(value: deliveryModel),
ChangeNotifierProvider.value(value: logModel),
ChangeNotifierProvider.value(value: phoneDeviceModel),
ChangeNotifierProvider.value(value: reportModel),
ChangeNotifierProvider.value(value: announcementModel),
ChangeNotifierProvider.value(value: reportUserModel),
ChangeNotifierProvider.value(value: pickUpModel),
ChangeNotifierProvider.value(value: shipmentRateModel),
ChangeNotifierProvider.value(value: shipmentModel),
ChangeNotifierProvider.value(value: packageModel),
ChangeNotifierProvider.value(value: boxModel),
ChangeNotifierProvider.value(value: messageModel),
ChangeNotifierProvider.value(value: invoiceModel),
ChangeNotifierProvider.value(value: customerModel),
ChangeNotifierProvider.value(value: discountModel),
ChangeNotifierProvider.value(value: testModel),
ChangeNotifierProvider(
builder: (context) => testModel,
create: (_) => SigninModel(),
),
],
child: Consumer<LanguageModel>(

View File

@@ -6,7 +6,7 @@ import 'package:provider/provider.dart';
import 'package:fcs/charts/qtyby_customer_table.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/model/product_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/po.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));
}
List<charts.Series<POChartData, String>> series = [

View File

@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/revenue.dart';
import 'package:fcs/widget/local_text.dart';
@@ -45,7 +45,8 @@ class _DODeliveryLineChartState extends State<DODeliveryLineChart> {
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
LocalText(context, "delivery.do.title", color: primaryColor, fontSize: 16),
LocalText(context, "delivery.do.title",
color: primaryColor, fontSize: 16),
InkWell(
child: LocalText(
context,
@@ -54,8 +55,8 @@ class _DODeliveryLineChartState extends State<DODeliveryLineChart> {
fontSize: 14,
),
onTap: () {
Navigator.of(context)
.push(MaterialPageRoute(builder: (_) => DODeliveryLineDetail()));
Navigator.of(context).push(MaterialPageRoute(
builder: (_) => DODeliveryLineDetail()));
},
),
],

View File

@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/revenue.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/my_data_table.dart';

View File

@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/revenue.dart';
import 'package:fcs/widget/local_text.dart';

View File

@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/revenue.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/my_data_table.dart';

View File

@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/revenue.dart';
import 'package:fcs/widget/local_text.dart';

View File

@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/model/main_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/revenue.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/my_data_table.dart';
@@ -56,7 +56,8 @@ class _DeliveryBarDataState extends State<DeliveryBarData> {
columnSpacing: 100,
columns: [
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()),
),
@@ -80,9 +81,7 @@ class _DeliveryBarDataState extends State<DeliveryBarData> {
MyDataCell(
new Text(dateFormatter.format(d.date), style: textStyle),
),
MyDataCell(
NumberCell(d.amount)
),
MyDataCell(NumberCell(d.amount)),
],
);

View File

@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/do_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/do.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/my_data_table.dart';
@@ -61,7 +61,8 @@ class _DeliveryBarDetailState extends State<DeliveryBarDetail> {
columns: [
MyDataColumn(label: LocalText(context, "do.name")),
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(),
),
@@ -82,9 +83,7 @@ class _DeliveryBarDetailState extends State<DeliveryBarDetail> {
MyDataCell(
new Text(d.doNumber, style: textStyle),
),
MyDataCell(
NumberCell(d.totalQty)
),
MyDataCell(NumberCell(d.totalQty)),
],
);

View File

@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/revenue.dart';
import 'package:fcs/widget/local_text.dart';
import 'delivery_summary_detail.dart';

View File

@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/revenue.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/my_data_table.dart';

View File

@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/po_do_count.dart';
import 'package:fcs/widget/local_text.dart';

View File

@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/po_do_count.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/my_data_table.dart';

View File

@@ -6,7 +6,7 @@ import 'package:provider/provider.dart';
import 'package:fcs/charts/po_balance_table.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/model/product_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/po.dart';
import 'package:fcs/widget/local_text.dart';

View File

@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/model/language_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/po.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/localization/app_translations.dart';

View File

@@ -3,15 +3,13 @@ import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/po.dart';
import 'package:fcs/widget/local_text.dart';
class POBalanceChart_ extends StatefulWidget {
@override
_POBalanceChartState createState() => _POBalanceChartState();
}
class _POBalanceChartState extends State<POBalanceChart_> {

View File

@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/charts/po_line_detail.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/po_do_count.dart';
import 'package:fcs/widget/local_text.dart';

View File

@@ -4,7 +4,7 @@ import 'package:http/http.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/po_do_count.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/my_data_table.dart';

View File

@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/model/language_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/po.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/localization/app_translations.dart';

View File

@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/model/main_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/revenue.dart';
import 'package:fcs/widget/local_text.dart';

View File

@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/model/main_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/revenue.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/my_data_table.dart';
@@ -56,7 +56,9 @@ class _RevenueLineDataState extends State<RevenueLineData> {
columnSpacing: 100,
columns: [
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()),
),
@@ -70,7 +72,7 @@ class _RevenueLineDataState extends State<RevenueLineData> {
List<MyDataRow> getProductRow(List<Data> revs) {
return revs.map((p) {
var r = MyDataRow(
onSelectChanged: (bool selected) async {
onSelectChanged: (bool selected) async {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => RevenueLineDetail(p.date)),
@@ -80,9 +82,7 @@ class _RevenueLineDataState extends State<RevenueLineData> {
MyDataCell(
new Text(dateFormatter.format(p.date), style: textStyle),
),
MyDataCell(
NumberCell(p.amount)
),
MyDataCell(NumberCell(p.amount)),
],
);

View File

@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/main_model.dart';
import 'package:fcs/model/po_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/po.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/my_data_table.dart';

View File

@@ -6,7 +6,7 @@ import 'package:dio/dio.dart';
import 'package:logging/logging.dart';
import 'package:fcs/vo/status.dart';
import '../config.dart';
import '../../config.dart';
final log = Logger('requestAPI');

View File

@@ -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:firebase_auth/firebase_auth.dart';
import '../../api_helper.dart';
class AuthFb {
static final AuthFb instance = AuthFb._();
AuthFb._();
final FirebaseAuth _fb = FirebaseAuth.instance;
static final FirebaseAuth _fb = FirebaseAuth.instance;
static FirebaseUser firebaseUser;
static String _verificationId;
Future<Auth> sendSmsCodeToPhoneNumber(String phoneNumber) {
Completer<Auth> completer = Completer();
final PhoneVerificationCompleted verificationCompleted =
(AuthCredential user) {
completer.complete(Auth(authStatus: AuthStatus.AUTH_VERIFIED));
(AuthCredential authCredential) async {
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(
'Inside _sendCodeToPhoneNumber: signInWithPhoneNumber auto succeeded: $user');
'Inside _sendCodeToPhoneNumber: signInWithPhoneNumber auto succeeded: $firebaseUser');
};
final PhoneVerificationFailed verificationFailed =
@@ -28,8 +36,7 @@ class AuthFb {
completer.complete(Auth(
authStatus: AuthStatus.ERROR,
authErrorCode: authException.code,
authErrorMsg: authException.message));
throw authException;
authErrorMsg: "Phone number verification failed"));
};
final PhoneCodeSent codeSent =
@@ -63,11 +70,10 @@ class AuthFb {
smsCode: smsCode,
);
var firebaseUser = await _fb.signInWithCredential(credential);
final FirebaseUser currentUser = await _fb.currentUser();
assert(firebaseUser.user.uid == currentUser.uid);
firebaseUser = await _signIn(credential);
auth.uid = firebaseUser.user.uid;
auth.uid = firebaseUser.uid;
auth.name = await _getName(firebaseUser);
auth.authStatus = AuthStatus.AUTH_VERIFIED;
} on Exception catch (e) {
auth.authStatus = AuthStatus.ERROR;
@@ -76,7 +82,46 @@ class AuthFb {
return Future.value(auth);
}
Future<void> logout() {
Future<void> signout() {
firebaseUser = null;
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;
}
}

View File

@@ -6,6 +6,8 @@ class Auth {
String authErrorMsg;
String uid;
String name;
String phoneNumber;
Auth({this.authStatus, this.authErrorCode, this.authErrorMsg});
}

View File

@@ -1 +1 @@
enum AuthStatus { SMS_SENT, AUTH_VERIFIED, ERROR }
enum AuthStatus { SMS_SENT, AUTH_VERIFIED, ERROR, SIGN_OUT }

View File

@@ -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/pages/contact.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/shipment_list.dart';
import 'package:fcs/pages/term.dart';
import 'package:fcs/pages_fcs/box_list.dart';
import 'package:fcs/pages_fcs/delivery_list.dart';
import 'package:fcs/pages_fcs/package_list.dart';
import 'package:fcs/widget/bottom_up_page_route.dart';
import 'package:fcs/widget/localization/transalation.dart';
import 'package:fcs/widget/right_left_page_route%20copy.dart';
import 'package:flutter/material.dart';
import 'package:flutter_icons/flutter_icons.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:intl/intl.dart';
import 'package:logging/logging.dart';
import 'package:provider/provider.dart';
import 'dart:math' as math;
import 'package:fcs/charts/bar_chart.dart';
import 'package:fcs/charts/delivery_do_line.dart';
import 'package:fcs/charts/delivery_do_summary.dart';
import 'package:fcs/charts/delivery_line.dart';
import 'package:fcs/charts/delivery_summary.dart';
import 'package:fcs/charts/do_line.dart';
import 'package:fcs/charts/po_balance_chart.dart';
import 'package:fcs/charts/po_line.dart';
import 'package:fcs/charts/revenue_line.dart';
import 'package:fcs/model/language_model.dart';
import 'package:fcs/model/product_model.dart';
import 'package:fcs/pages/banks/banks.dart';
import 'package:fcs/pages/buyer_list.dart';
import 'package:fcs/pages/contact.dart';
import 'package:fcs/pages/delivery/delivery_list.dart';
import 'package:fcs/pages/manual/manual_page.dart';
import 'package:fcs/pages/notification_list.dart';
import 'package:fcs/pages/term.dart';
import 'package:fcs/reports/report_list.dart';
import 'package:fcs/widget/banner.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/bottom_up_page_route.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/localization/transalation.dart';
import 'package:fcs/widget/offline_redirect.dart';
import 'package:fcs/widget/right_left_page_route%20copy.dart';
import 'package:flutter/cupertino.dart';
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:intl/intl.dart';
import 'package:logging/logging.dart';
import 'package:provider/provider.dart';
import '../theme/theme.dart';
import 'announcement_list.dart';
import 'buying_online.dart';
import 'customer_list.dart';
import 'do/do_list.dart';
import 'invoice/invoce_list.dart';
import 'my_registeration.dart';
import 'pd/pd_list.dart';
import 'products_list.dart';
import '../../../pages/buying_online.dart';
import '../../../pages/customer_list.dart';
import '../../../pages/fcs_profile_page.dart';
import '../../../pages/invoice/invoce_list.dart';
import '../../../pages/pickup_list.dart';
import '../../../pages/shipment_rates.dart';
import '../../../pages/staff_list.dart';
import '../theme.dart';
import 'profile_page.dart';
import '../fcs/common/pages/signin/signin_page.dart';
import 'staff_list.dart';
import 'fcs_profile_page.dart';
import 'pd/pd_list.dart';
import 'pickup_list.dart';
import 'products_list.dart';
import 'profile_page.dart';
import 'shipment_rates.dart';
import 'storage/storage_list.dart';
import 'user_list.dart';
import 'signin/signin_page.dart';
final msgLog = Logger('backgroundMessageHandler');

View File

@@ -1,26 +1,21 @@
import 'package:fcs/model/shipment_model.dart';
import 'package:fcs/pages_fcs/shipping_address_row.dart';
import 'package:fcs/vo/shipping_address.dart';
import 'package:fcs/widget/bottom_up_page_route.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/my_data_table.dart';
import 'package:flutter/material.dart';
import 'package:flutter_icons/flutter_icons.dart';
import 'package:package_info/package_info.dart';
import 'package:provider/provider.dart';
import 'package:fcs/fcs/common/pages/signin/model/signin_model.dart';
import 'package:fcs/model/language_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/pages/profile_edit.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/shipping_address.dart';
import 'package:fcs/widget/bottom_up_page_route.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/localization/transalation.dart';
import 'package:fcs/widget/progress.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../theme/theme.dart';
import 'profile_setting.dart';
import 'shipping_address_editor.dart';
import '../../../pages/shipping_address_editor.dart';
import '../theme.dart';
typedef void ProfileCallback();
@@ -235,8 +230,9 @@ class _ProfileState extends State<Profile> {
_isLoading = true;
});
await mainModel.logout();
await context.read<SigninModel>().signout();
Navigator.of(context).pushNamedAndRemoveUntil(
"/home", ModalRoute.withName('/home'));
"/welcome", ModalRoute.withName('/welcome'));
Future.delayed(Duration(seconds: 1), () {
if (mounted) {
setState(() {

View File

@@ -1,17 +1,19 @@
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/shared_pref.dart';
import 'package:fcs/vo/user.dart';
import 'package:fcs/pages/util.dart';
import 'package:fcs/widget/bottom_up_page_route.dart';
import 'package:flutter/material.dart';
import 'package:pin_input_text_field/pin_input_text_field.dart';
import 'package:provider/provider.dart';
import '../../../../theme/theme.dart';
import 'signup_page.dart';
import '../../theme.dart';
import '../../../../widget/local_text.dart';
import '../../../../widget/progress.dart';
import '../../../../pages/user_edit.dart';
const resend_count_sec = 5;
@@ -191,9 +193,21 @@ class _CodePageState extends State<CodePage> {
_resend() async {}
_verify() async {
Provider.of<MainModel>(context).saveUser(pin, widget.phoneNumber);
await Navigator.of(context).push(BottomUpPageRoute(UserEditPage()));
Navigator.pop(context);
try {
Auth auth = await context.read<SigninModel>().signin(this.pin);
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() {

View File

@@ -1,8 +1,25 @@
import 'package:fcs/fcs/common/data/providers/auth_fb.dart';
import 'package:fcs/fcs/common/domain/entities/auth.dart';
import 'package:flutter/foundation.dart';
class SigninModel extends ChangeNotifier {
setPhoneNumber(String phoneNumber) async {
await AuthFb.instance.sendSmsCodeToPhoneNumber(phoneNumber);
Future<Auth> sendSms(String 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);
}
}

View File

@@ -1,10 +1,14 @@
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:flutter/material.dart';
import 'package:flutter/services.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/progress.dart';
import 'code_page.dart';
@@ -157,19 +161,33 @@ class _SigninPageState extends State<SigninPage> {
return;
}
setState(() {
_isLoading = true;
});
try {
Exception exp;
phoneNumber = phoneNumber[0] == "0"
? phoneNumber.replaceFirst("0", "")
: phoneNumber;
phoneNumber = dialCode + phoneNumber;
await Navigator.of(context)
.push(BottomUpPageRoute(CodePage(phoneNumber: phoneNumber)));
Navigator.pop(context);
Auth auth = await context.read<SigninModel>().sendSms(phoneNumber);
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;
} catch (e) {
showMsgDialog(context, "Error", e.toString());
}
setState(() {
_isLoading = false;
});
}
}

View File

@@ -1,21 +1,19 @@
import 'package:fcs/model/shared_pref.dart';
import 'package:fcs/widget/bottom_up_page_route.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/fcs/common/pages/signin/model/signin_model.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import '../theme/theme.dart';
import '../widget/local_text.dart';
import '../widget/progress.dart';
import 'home_page.dart';
import '../../../../widget/local_text.dart';
import '../../../../widget/progress.dart';
import '../../theme.dart';
import 'package:provider/provider.dart';
class UserEditPage extends StatefulWidget {
class SignupPage extends StatefulWidget {
@override
_UserEditPageState createState() => _UserEditPageState();
_SignupPageState createState() => _SignupPageState();
}
class _UserEditPageState extends State<UserEditPage> {
class _SignupPageState extends State<SignupPage> {
bool _isLoading = false;
TextEditingController nameCtl;
@@ -110,6 +108,7 @@ class _UserEditPageState extends State<UserEditPage> {
}
_submit() async {
Navigator.pushNamedAndRemoveUntil(context, "/homeLogin", (r) => false);
await context.read<SigninModel>().signup(nameCtl.text);
Navigator.pushNamedAndRemoveUntil(context, "/home", (r) => false);
}
}

View File

@@ -1,7 +1,7 @@
import 'dart:async';
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/localization/app_translations.dart';
import 'package:flutter/material.dart';
@@ -51,9 +51,9 @@ class _SplashScreenState extends State<SplashScreen> {
if (_loaded) {
timer.cancel();
if (this._isLogin) {
Navigator.of(context).pushReplacementNamed('/homeLogin');
} else {
Navigator.of(context).pushReplacementNamed('/home');
} else {
Navigator.of(context).pushReplacementNamed('/welcome');
}
// if (_isSupport) {

View File

@@ -13,21 +13,21 @@ import 'package:intl/intl.dart' as intl;
import 'package:logging/logging.dart';
import 'package:provider/provider.dart';
import '../theme/theme.dart';
import '../theme.dart';
import 'profile_page.dart';
import '../fcs/common/pages/signin/signin_page.dart';
import 'term.dart';
import 'signin/signin_page.dart';
import '../../../pages/term.dart';
final msgLog = Logger('backgroundMessageHandler');
class HomePageWelcome extends StatefulWidget {
class WelcomePage extends StatefulWidget {
@override
_HomePageWelcomeState createState() => _HomePageWelcomeState();
_WelcomePageState createState() => _WelcomePageState();
}
typedef BtnCallback();
class _HomePageWelcomeState extends State<HomePageWelcome> {
class _WelcomePageState extends State<WelcomePage> {
final log = Logger('_HomePageWelcomeState');
bool login = false;
bool customer = true;
@@ -137,56 +137,54 @@ class _HomePageWelcomeState extends State<HomePageWelcome> {
Color(0xfa272262),
], // whitish to gray
)),
child: Column(
child: ListView(
children: <Widget>[
Expanded(
child: Column(
children: <Widget>[
Padding(
padding: const EdgeInsets.all(80.0),
child: Text(
"Welcome!",
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: 28,
fontFamily: "Roboto"),
),
Column(
children: <Widget>[
Padding(
padding: const EdgeInsets.all(80.0),
child: Text(
"Welcome!",
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: 28,
fontFamily: "Roboto"),
),
Padding(
padding: const EdgeInsets.only(top: 0.0),
child: Text(
"Cargo Services",
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: 28,
fontFamily: "Roboto"),
),
),
Padding(
padding: const EdgeInsets.only(top: 0.0),
child: Text(
"Cargo Services",
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: 28,
fontFamily: "Roboto"),
),
Padding(
padding: const EdgeInsets.all(10.0),
child: Text(
"by FCS Trading",
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: 18,
fontFamily: "Roboto"),
),
),
Padding(
padding: const EdgeInsets.all(10.0),
child: Text(
"by FCS Trading",
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: 18,
fontFamily: "Roboto"),
),
Container(
padding: EdgeInsets.only(top: 10, bottom: 10),
child: CircleAvatar(
radius: (50),
backgroundColor: Colors.white,
child: ClipRRect(
borderRadius: BorderRadius.circular(50),
child: Image.asset("assets/logo.jpg"),
)),
),
],
),
),
Container(
padding: EdgeInsets.only(top: 10, bottom: 10),
child: CircleAvatar(
radius: (50),
backgroundColor: Colors.white,
child: ClipRRect(
borderRadius: BorderRadius.circular(50),
child: Image.asset("assets/logo.jpg"),
)),
),
],
),
// Row(
// children: <Widget>[
@@ -241,28 +239,29 @@ class _HomePageWelcomeState extends State<HomePageWelcome> {
// ),
// ],
// ),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
// _buildSmallButton(
// "Policies", FontAwesomeIcons.fileContract),
InkWell(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => Contact()));
},
child: _buildSmallButton(
"Contact Us", SimpleLineIcons.support),
),
InkWell(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => Term()));
},
child: _buildSmallButton(
"Terms of service", Icons.info_outline),
),
],
Padding(
padding: const EdgeInsets.only(top: 28.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
InkWell(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => Contact()));
},
child: _buildSmallButton(
"Contact Us", SimpleLineIcons.support),
),
InkWell(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => Term()));
},
child: _buildSmallButton(
"Terms of service", Icons.info_outline),
),
],
),
)
],
))),
@@ -285,20 +284,12 @@ class _HomePageWelcomeState extends State<HomePageWelcome> {
return Padding(
padding: const EdgeInsets.all(18.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
IconButton(
icon: Icon(iconData, color: Colors.white70),
color: Colors.white70,
onPressed: null),
// RaisedButton(onPressed: ()=>{},child: Row(
// children: <Widget>[
// IconButton(
// icon: Icon(iconData, ),
// onPressed: null),
// Text(text),
// ],
// ),color: Colors.transparent,
// focusColor: Colors.transparent,),
Padding(
padding: const EdgeInsets.only(right: 5),
child: Icon(iconData, color: Colors.white70, size: 18),
),
Text(
text,
style: subMenuStyle,

View File

@@ -31,7 +31,7 @@ class AuthImp implements AuthInterface {
}
@override
Future<Auth> logout() {
return authFb.logout();
Future<Auth> signout() {
return authFb.signout();
}
}

View File

@@ -3,5 +3,5 @@ import 'package:fcs/fcs/common/domain/entities/auth.dart';
abstract class AuthInterface {
Future<Auth> sendSmsCodeToPhoneNumber(String phoneNumber);
Future<Auth> signInWithSmsCode(String smsCode);
Future<Auth> logout();
Future<Auth> signout();
}

View File

@@ -18,7 +18,7 @@ const TextStyle welcomeLabelStyle =
const TextStyle welcomeSubLabelStyle =
TextStyle(fontSize: 18, color: primaryColor, fontWeight: FontWeight.w500);
const TextStyle subMenuStyle =
TextStyle(fontSize: 14, color: Colors.white, fontWeight: FontWeight.w500);
TextStyle(fontSize: 11, color: Colors.white, fontWeight: FontWeight.w500);
const TextStyle siginButtonStyle =
TextStyle(fontSize: 16, color: Colors.white, fontWeight: FontWeight.w500);

View File

@@ -1,7 +1,6 @@
import 'package:fcs/config.dart';
import 'package:flutter/material.dart';
import 'package:logging/logging.dart';
import 'package:fcs/config.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'app.dart';
@@ -9,8 +8,7 @@ void main() {
Config(
flavor: Flavor.DEV,
color: Colors.blue,
apiURL:
"https://asia-northeast1-mokkon-wholesale-dev.cloudfunctions.net/APIOK",
apiURL: "http://192.168.100.11:7777",
reportURL: "http://petrok-dev.mokkon.com:8080",
reportProjectID: "dev",
level: Level.ALL);

View File

@@ -1,5 +1,5 @@
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/user.dart';

View File

@@ -4,7 +4,7 @@ import 'dart:convert' show HtmlEscape, base64, utf8;
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:logging/logging.dart';
import 'package:fcs/config.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/buyer.dart';
import 'package:fcs/vo/popup_menu.dart';

View File

@@ -4,7 +4,7 @@ import 'dart:typed_data';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:path/path.dart' as Path;
import 'package:fcs/model/api_helper.dart';
import 'package:fcs/fcs/common/api_helper.dart';
import 'package:fcs/model/constants.dart';
import 'package:fcs/pages/do/do_files.dart';
import 'package:fcs/vo/do.dart';
@@ -27,7 +27,6 @@ class DOModel extends BaseModel {
_loadDOs();
}
@override
logout() async {
if (listener != null) await listener.cancel();
@@ -247,7 +246,8 @@ class DOModel extends BaseModel {
.where("status", isEqualTo: do_approved_status)
.where("delivery_date", isGreaterThanOrEqualTo: date)
.where("delivery_date", isLessThan: dateAddOne)
.orderBy("delivery_date").orderBy("user_name")
.orderBy("delivery_date")
.orderBy("user_name")
.limit(100)
.getDocuments();
snapshots.documents.forEach((d) {

View File

@@ -22,7 +22,7 @@ import 'package:fcs/widget/NetworkConnectivity.dart';
import '../config.dart';
import '../vo/status.dart';
import '../vo/user.dart';
import 'api_helper.dart';
import '../fcs/common/api_helper.dart';
import 'base_model.dart';
import 'constants.dart';
import 'firebase_helper.dart';
@@ -97,10 +97,10 @@ class MainModel extends ChangeNotifier {
phone: '+959123456789',
mail: 'kbz@gmail.com'),
PaymentMethod(
name: 'PayPal',
accountName: 'FCS',
link: 'https://www.paypal.com/donate/buttons',
),
name: 'PayPal',
accountName: 'FCS',
link: 'https://www.paypal.com/donate/buttons',
),
];
return methods;
}

View File

@@ -6,7 +6,7 @@ import 'package:fcs/vo/report.dart';
import 'package:fcs/vo/report_user.dart';
import 'package:open_file/open_file.dart';
import 'package:path_provider/path_provider.dart';
import 'package:fcs/model/api_helper.dart' as api;
import 'package:fcs/fcs/common/api_helper.dart' as api;
import 'package:fcs/vo/report.dart';
import '../config.dart';

View File

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

View File

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

View File

@@ -5,7 +5,7 @@ import 'package:provider/provider.dart';
import 'package:fcs/model/announcement_model.dart';
import 'package:fcs/model/language_model.dart';
import 'package:fcs/pages/util.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/announcement.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/localization/app_translations.dart';

View File

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

View File

@@ -5,7 +5,7 @@ import 'package:image_picker/image_picker.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/main_model.dart';
import 'package:fcs/pages/util.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/bank_account.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/local_text_field.dart';

View File

@@ -3,7 +3,7 @@ import 'package:flutter/services.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/main_model.dart';
import 'package:fcs/pages/banks/bank_edit.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/bank_account.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/progress.dart';

View File

@@ -5,7 +5,7 @@ import 'package:flutter_icons/flutter_icons.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/product_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/buyer.dart';
import 'package:fcs/vo/product.dart';
import 'package:fcs/widget/progress.dart';

View File

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

View File

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

View File

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

View File

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

View File

@@ -7,7 +7,7 @@ import 'package:fcs/model/main_model.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
import '../widget/label_widgets.dart';
import '../widget/local_text.dart';
import 'instruction.dart';

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -5,7 +5,7 @@ import 'package:fcs/model/language_model.dart';
import 'package:fcs/model/main_model.dart';
import 'package:fcs/pages/phone_input.dart';
import 'package:fcs/pages/util.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/setting.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/local_text_field.dart';

View File

@@ -4,7 +4,7 @@ import 'package:fcs/widget/localization/app_translations.dart';
import 'package:flutter/material.dart';
import 'package:fcs/widget/progress.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
class CustomEditor extends StatefulWidget {
final Custom custom;

View File

@@ -4,7 +4,7 @@ import 'package:fcs/model/employee_model.dart';
import 'package:fcs/model/language_model.dart';
import 'package:fcs/model/main_model.dart';
import 'package:fcs/model/user_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/role.dart';
import 'package:fcs/vo/user.dart';
import 'package:fcs/widget/local_text.dart';

View File

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

View File

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

View File

@@ -7,7 +7,7 @@ import 'package:fcs/model/language_model.dart';
import 'package:fcs/model/main_model.dart';
import 'package:fcs/pages/delivery/delivery_item.dart';
import 'package:fcs/pages/util.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/popup_menu.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/popupmenu.dart';

View File

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

View File

@@ -5,7 +5,7 @@ import 'package:fcs/widget/localization/app_translations.dart';
import 'package:flutter/material.dart';
import 'package:fcs/widget/progress.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
class DiscountByWeightEditor extends StatefulWidget {
final Discount discount;

View File

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

View File

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

View File

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

View File

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

View File

@@ -3,7 +3,7 @@ import 'package:provider/provider.dart';
import 'package:fcs/model/language_model.dart';
import 'package:fcs/model/po_model.dart';
import 'package:fcs/pages/util.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/do.dart';
import 'package:fcs/vo/po.dart';
import 'package:fcs/widget/img_file.dart';

View File

@@ -6,7 +6,7 @@ import 'package:fcs/model/language_model.dart';
import 'package:fcs/model/main_model.dart';
import 'package:fcs/pages/do/do_creation_form.dart';
import 'package:fcs/pages/util.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/popup_menu.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/popupmenu.dart';

View File

@@ -3,7 +3,7 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/language_model.dart';
import 'package:fcs/pages/util.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/do.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/localization/app_translations.dart';

View File

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

View File

@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/language_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import '../util.dart';

View File

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

View File

@@ -3,7 +3,7 @@ import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/log_model.dart';
import 'package:fcs/model/user_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/document_log.dart';
import 'package:fcs/vo/role.dart';
import 'package:fcs/widget/local_text.dart';

View File

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

View File

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

View File

@@ -4,7 +4,7 @@ import 'package:provider/provider.dart';
import 'package:fcs/model/main_model.dart';
import 'package:fcs/model/user_model.dart';
import 'package:fcs/pages/reset_password.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/widget/local_text.dart';
import 'package:fcs/widget/localization/app_translations.dart';
import 'package:fcs/widget/progress.dart';

View File

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

View File

@@ -3,7 +3,7 @@ import 'package:fcs/widget/localization/app_translations.dart';
import 'package:flutter/material.dart';
import 'package:fcs/widget/progress.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import '../theme/theme.dart';
import '../fcs/common/theme.dart';
class InvitationPage extends StatefulWidget {
@override

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -7,7 +7,7 @@ import 'package:fcs/model/language_model.dart';
import 'package:fcs/model/main_model.dart';
import 'package:fcs/model/manual_model.dart';
import 'package:fcs/pages/manual/moveable_stack_item.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/manual.dart';
import 'package:path/path.dart' as Path;
import 'package:fcs/widget/progress.dart';

View File

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

View File

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

View File

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

View File

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

View File

@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/product_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/fcs/common/theme.dart';
import 'package:fcs/vo/buyer.dart';
import 'package:fcs/vo/product.dart';
import 'package:fcs/widget/progress.dart';

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