Merge branch 'master' of tzw/fcs into master
This commit is contained in:
BIN
assets/FirstName&LastName.jpeg
Normal file
BIN
assets/FirstName&LastName.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 81 KiB |
BIN
assets/Fullname.jpeg
Normal file
BIN
assets/Fullname.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 82 KiB |
@@ -480,9 +480,10 @@
|
||||
"user.shipping_address":"USA SHIPPING ADDRESS",
|
||||
"user.deliveryAddress":"My delivery address",
|
||||
"user.buying_instruction":"See below instructions to add USA shipping address while shoping online",
|
||||
"user.form.shipping_address":"SHIPPING ADDRESS",
|
||||
|
||||
"buy_online":"Buying Online",
|
||||
"buy_online.title":"BUYING ONLINE",
|
||||
"buy_online":"Buying Instructions",
|
||||
"buy_online.title":"BUYING INSTRUCTIONS",
|
||||
"buy.amazon":"Amazon",
|
||||
"buy.newegg":"Newegg",
|
||||
"buy.macy":"Macy",
|
||||
@@ -540,8 +541,8 @@
|
||||
"pickup.information": "Pickup Informations",
|
||||
"pickup.recipient_information": "Recipient Informations",
|
||||
|
||||
"message.btn":"Messages",
|
||||
"message.title":"MESSAGES",
|
||||
"message.btn":"Notifications",
|
||||
"message.title":"NOTIFICATIONS",
|
||||
|
||||
"customers.btn": "Customers",
|
||||
"customers.title": "CUSTOMERS",
|
||||
@@ -554,7 +555,7 @@
|
||||
"invoice.add_box":"Add Box",
|
||||
|
||||
"term":"TERMS",
|
||||
"term.btn":"Terms",
|
||||
"term.btn":"Terms of services",
|
||||
|
||||
"customer.list.title":"CUSTOMERS",
|
||||
"customer.form.title":"CUSTOMER",
|
||||
|
||||
@@ -513,9 +513,10 @@
|
||||
"user.shipping_address":"My USA shipping address",
|
||||
"user.deliveryAddress":"My delivery address",
|
||||
"user.buying_instruction":"See below instructions to add shipping address",
|
||||
"user.form.shipping_address":"ကုန်ပစ္စည်းပို့ဆောင်ရမည့်လိပ်စာ",
|
||||
|
||||
"buy_online":"အွန်လိုင်း မှဝယ်ယူခြင်း",
|
||||
"buy_online.title":"အွန်လိုင်း မှဝယ်ယူခြင်း",
|
||||
"buy_online":"ဝယ်ယူရန်ညွှန်ကြားချက်များ",
|
||||
"buy_online.title":"ဝယ်ယူရန်ညွှန်ကြားချက်များ",
|
||||
"buy.amazon":"Amazon",
|
||||
"buy.newegg":"Newegg",
|
||||
"buy.macy":"Macy",
|
||||
@@ -562,8 +563,8 @@
|
||||
|
||||
"rate.cal.title":"အဆင့်သတ်မှတ်ချက်များတွက်ချက်ရန်",
|
||||
|
||||
"message.btn":"မက်ဆေ့ခ်ျများ",
|
||||
"message.title":"မက်ဆေ့ခ်ျများ",
|
||||
"message.btn":"အသိပေးချက်များ",
|
||||
"message.title":"အသိပေးချက်များ",
|
||||
|
||||
"customers.btn": "ဝယ်ယူသူများ",
|
||||
"customers.title": "ဝယ်ယူသူများ",
|
||||
|
||||
@@ -35,6 +35,7 @@ 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 'pages/term.dart';
|
||||
import 'pages/welcome_page.dart';
|
||||
@@ -127,7 +128,8 @@ class _AppState extends State<App> {
|
||||
Map<String, WidgetBuilder> route(BuildContext context) {
|
||||
final routes = <String, WidgetBuilder>{
|
||||
'/': (_) => SplashScreen(),
|
||||
'/home': (_) => HomePage(),
|
||||
'/home': (_) => HomePageWelcome(),
|
||||
'/homeLogin': (_) => HomePage(),
|
||||
'/welcome': (context) => WelcomePage(),
|
||||
'/term': (context) => Term(
|
||||
agreePage: true,
|
||||
|
||||
@@ -32,7 +32,8 @@ class PickUpModel extends BaseModel {
|
||||
weight: 25,
|
||||
status: 'Pending',
|
||||
date: DateTime(2020, 5, 1),
|
||||
address: '154-19 64th Ave.\nFlushing, NY 11367'),
|
||||
address: '154-19 64th Ave.\nFlushing, NY 11367',
|
||||
handlingFee: 5000),
|
||||
PickUp(
|
||||
id: "P200125 - 12 May 2020",
|
||||
userName: "Ko Kyaw Nyi",
|
||||
@@ -43,7 +44,8 @@ class PickUpModel extends BaseModel {
|
||||
weight: 25,
|
||||
status: 'Assigned',
|
||||
date: DateTime(2020, 5, 6),
|
||||
address: '154-19 64th Ave.\nFlushing, NY 11367'),
|
||||
address: '154-19 64th Ave.\nFlushing, NY 11367',
|
||||
handlingFee: 5000),
|
||||
PickUp(
|
||||
id: "P200441 - 13 Apr 2020",
|
||||
userName: "Ko Kyaw Nyi",
|
||||
@@ -54,7 +56,8 @@ class PickUpModel extends BaseModel {
|
||||
weight: 25,
|
||||
status: "Pickuped",
|
||||
date: DateTime(2020, 5, 9),
|
||||
address: '154-19 64th Ave.\nFlushing, NY 11367'),
|
||||
address: '154-19 64th Ave.\nFlushing, NY 11367',
|
||||
handlingFee: 5000),
|
||||
PickUp(
|
||||
id: "P200412 - 12 Apr 2020",
|
||||
userName: "Ko Kyaw Nyi",
|
||||
@@ -65,7 +68,8 @@ class PickUpModel extends BaseModel {
|
||||
weight: 25,
|
||||
status: 'Pickuped',
|
||||
date: DateTime(2020, 5, 15),
|
||||
address: '154-19 64th Ave.\nFlushing, NY 11367'),
|
||||
address: '154-19 64th Ave.\nFlushing, NY 11367',
|
||||
handlingFee: 5000),
|
||||
PickUp(
|
||||
id: "P200125 - 12 May 2020",
|
||||
userName: "Ko Kyaw Nyi",
|
||||
@@ -76,7 +80,8 @@ class PickUpModel extends BaseModel {
|
||||
weight: 25,
|
||||
status: 'Pickuped',
|
||||
date: DateTime(2020, 5, 20),
|
||||
address: '154-19 64th Ave.\nFlushing, NY 11367'),
|
||||
address: '154-19 64th Ave.\nFlushing, NY 11367',
|
||||
handlingFee: 5000),
|
||||
PickUp(
|
||||
id: "P200441 - 13 Apr 2020",
|
||||
userName: "Ko Kyaw Nyi",
|
||||
@@ -87,7 +92,8 @@ class PickUpModel extends BaseModel {
|
||||
weight: 25,
|
||||
status: "Pickuped",
|
||||
date: DateTime(2020, 5, 21),
|
||||
address: '154-19 64th Ave.\nFlushing, NY 11367'),
|
||||
address: '154-19 64th Ave.\nFlushing, NY 11367',
|
||||
handlingFee: 5000),
|
||||
PickUp(
|
||||
id: "P200441 - 10 Apr 2020",
|
||||
userName: "Ko Kyaw Nyi",
|
||||
@@ -98,7 +104,8 @@ class PickUpModel extends BaseModel {
|
||||
weight: 25,
|
||||
status: "Canceled",
|
||||
date: DateTime(2020, 5, 25),
|
||||
address: '154-19 64th Ave.\nFlushing, NY 11367'),
|
||||
address: '154-19 64th Ave.\nFlushing, NY 11367',
|
||||
handlingFee: 5000),
|
||||
PickUp(
|
||||
id: "P200441 - 6 Apr 2020",
|
||||
userName: "Ko Kyaw Nyi",
|
||||
@@ -109,7 +116,8 @@ class PickUpModel extends BaseModel {
|
||||
weight: 25,
|
||||
status: "Canceled",
|
||||
date: DateTime(2020, 5, 27),
|
||||
address: '154-19 64th Ave.\nFlushing, NY 11367'),
|
||||
address: '154-19 64th Ave.\nFlushing, NY 11367',
|
||||
handlingFee: 5000),
|
||||
];
|
||||
|
||||
List<PickUp> get canceled {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:fcs/vo/shipment.dart';
|
||||
import 'package:fcs/vo/shipping_address.dart';
|
||||
|
||||
import 'base_model.dart';
|
||||
|
||||
@@ -74,6 +75,23 @@ class ShipmentModel extends BaseModel {
|
||||
return _shipments;
|
||||
}
|
||||
|
||||
List<ShippingAddress> shippingAddresses = [
|
||||
ShippingAddress(
|
||||
fullName: 'FCS-0203-390-2',
|
||||
addressLine1: '154-19 64th Ave.',
|
||||
addressLine2: 'Flushing',
|
||||
city: 'NY',
|
||||
state: 'NY',
|
||||
phoneNumber: '+1 (292)215-2247'),
|
||||
ShippingAddress(
|
||||
fullName: 'FCS-0204-390-2',
|
||||
addressLine1: '153-154 5th Thitsar.',
|
||||
addressLine2: 'Flushing',
|
||||
city: 'Yangon',
|
||||
state: 'Yangon',
|
||||
phoneNumber: '+09 5724 87508'),
|
||||
];
|
||||
|
||||
void initUser(user) {
|
||||
super.initUser(user);
|
||||
}
|
||||
|
||||
@@ -20,6 +20,10 @@ class BuyingOnlinePage extends StatefulWidget {
|
||||
|
||||
class _BuyingOnlinePagetate extends State<BuyingOnlinePage> {
|
||||
bool _isLoading = false;
|
||||
List<String> images = [
|
||||
'assets/Fullname.jpeg',
|
||||
'assets/FirstName&LastName.jpeg'
|
||||
];
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -86,64 +90,6 @@ class _BuyingOnlinePagetate extends State<BuyingOnlinePage> {
|
||||
),
|
||||
);
|
||||
|
||||
final neweggbutton = Container(
|
||||
padding: EdgeInsets.only(left: 10, right: 10, top: 10),
|
||||
child: Container(
|
||||
height: 45.0,
|
||||
decoration: BoxDecoration(
|
||||
color: primaryColor,
|
||||
shape: BoxShape.rectangle,
|
||||
// borderRadius: BorderRadius.all(Radius.circular(10.0))
|
||||
),
|
||||
child: ButtonTheme(
|
||||
minWidth: 900.0,
|
||||
height: 100.0,
|
||||
child: FlatButton(
|
||||
onPressed: () {
|
||||
Navigator.of(context)
|
||||
.push(BottomUpPageRoute(ManualPage(marketplace: 'Newegg')));
|
||||
},
|
||||
child: LocalText(
|
||||
context,
|
||||
'buy.newegg',
|
||||
color: Colors.white,
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
final macybutton = Container(
|
||||
padding: EdgeInsets.only(left: 10, right: 10, top: 10),
|
||||
child: Container(
|
||||
height: 45.0,
|
||||
decoration: BoxDecoration(
|
||||
color: primaryColor,
|
||||
shape: BoxShape.rectangle,
|
||||
// borderRadius: BorderRadius.all(Radius.circular(10.0))
|
||||
),
|
||||
child: ButtonTheme(
|
||||
minWidth: 900.0,
|
||||
height: 100.0,
|
||||
child: FlatButton(
|
||||
onPressed: () {
|
||||
Navigator.of(context)
|
||||
.push(BottomUpPageRoute(ManualPage(marketplace: 'Macy')));
|
||||
},
|
||||
child: LocalText(
|
||||
context,
|
||||
'buy.macy',
|
||||
color: Colors.white,
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
return LocalProgress(
|
||||
inAsyncCall: _isLoading,
|
||||
child: Scaffold(
|
||||
@@ -202,9 +148,20 @@ class _BuyingOnlinePagetate extends State<BuyingOnlinePage> {
|
||||
),
|
||||
// deliveryAddressBox,
|
||||
instructionBox,
|
||||
amazonbutton,
|
||||
neweggbutton,
|
||||
macybutton,
|
||||
Container(
|
||||
height: 500,
|
||||
width: 500,
|
||||
child: ListView.builder(
|
||||
itemCount: images.length,
|
||||
scrollDirection: Axis.horizontal,
|
||||
itemBuilder: (context, index) {
|
||||
return Container(
|
||||
padding: EdgeInsets.only(left: 0, right: 5, top: 5),
|
||||
child: Image.asset(images[index], fit: BoxFit.contain),
|
||||
);
|
||||
}),
|
||||
),
|
||||
|
||||
SizedBox(height: 10)
|
||||
],
|
||||
),
|
||||
|
||||
@@ -208,7 +208,7 @@ class _HomePageState extends State<HomePage> {
|
||||
ToggleButtons(
|
||||
children: <Widget>[
|
||||
Image.asset(
|
||||
'icons/flags/png/gb.png',
|
||||
'icons/flags/png/us.png',
|
||||
package: 'country_icons',
|
||||
fit: BoxFit.fitWidth,
|
||||
width: 25,
|
||||
@@ -232,14 +232,14 @@ class _HomePageState extends State<HomePage> {
|
||||
);
|
||||
},
|
||||
iconSize: 30,
|
||||
icon: Icon(Icons.tune),
|
||||
icon: Icon(Icons.account_circle),
|
||||
),
|
||||
]
|
||||
: <Widget>[
|
||||
ToggleButtons(
|
||||
children: <Widget>[
|
||||
Image.asset(
|
||||
'icons/flags/png/gb.png',
|
||||
'icons/flags/png/us.png',
|
||||
package: 'country_icons',
|
||||
fit: BoxFit.fitWidth,
|
||||
width: 25,
|
||||
@@ -318,7 +318,7 @@ class _HomePageState extends State<HomePage> {
|
||||
children: <Widget>[
|
||||
// _buildSmallButton(
|
||||
// "Policies", FontAwesomeIcons.fileContract),
|
||||
_buildSmallButton("Support", SimpleLineIcons.support),
|
||||
_buildSmallButton("Contact Us", SimpleLineIcons.support),
|
||||
],
|
||||
)
|
||||
],
|
||||
|
||||
257
lib/pages/home_page_welcome.dart
Normal file
257
lib/pages/home_page_welcome.dart
Normal file
@@ -0,0 +1,257 @@
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/widget/bottom_up_page_route.dart';
|
||||
import 'package:fcs/widget/localization/transalation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_icons/flutter_icons.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import 'package:fcs/model/language_model.dart';
|
||||
|
||||
import 'package:fcs/pages/contact.dart';
|
||||
|
||||
import 'package:fcs/widget/banner.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
import 'package:fcs/widget/offline_redirect.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
import '../theme/theme.dart';
|
||||
|
||||
import 'profile_page.dart';
|
||||
import 'signin_page.dart';
|
||||
|
||||
final msgLog = Logger('backgroundMessageHandler');
|
||||
|
||||
class HomePageWelcome extends StatefulWidget {
|
||||
@override
|
||||
_HomePageWelcomeState createState() => _HomePageWelcomeState();
|
||||
}
|
||||
|
||||
typedef BtnCallback();
|
||||
|
||||
class _HomePageWelcomeState extends State<HomePageWelcome> {
|
||||
final log = Logger('_HomePageWelcomeState');
|
||||
bool login = false;
|
||||
bool customer = true;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
int actualChart = 0;
|
||||
final numberFormatter = new NumberFormat("#,###");
|
||||
|
||||
String pin;
|
||||
List<bool> isSelected = [true, false];
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
login = Provider.of<MainModel>(context).isLogin();
|
||||
|
||||
return OfflineRedirect(
|
||||
child: FlavorBanner(
|
||||
child: Scaffold(
|
||||
appBar: AppBar(
|
||||
elevation: 0,
|
||||
backgroundColor: primaryColor,
|
||||
title: ClipRRect(
|
||||
child: Image.asset("assets/logo.jpg", height: 40),
|
||||
borderRadius: new BorderRadius.circular(30.0),
|
||||
),
|
||||
actions: login
|
||||
? <Widget>[
|
||||
ToggleButtons(
|
||||
children: <Widget>[
|
||||
Image.asset(
|
||||
'icons/flags/png/us.png',
|
||||
package: 'country_icons',
|
||||
fit: BoxFit.fitWidth,
|
||||
width: 25,
|
||||
),
|
||||
Image.asset(
|
||||
'icons/flags/png/mm.png',
|
||||
package: 'country_icons',
|
||||
fit: BoxFit.fitWidth,
|
||||
width: 25,
|
||||
)
|
||||
],
|
||||
onPressed: _langChange,
|
||||
isSelected: isSelected,
|
||||
),
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) => Profile()),
|
||||
);
|
||||
},
|
||||
iconSize: 30,
|
||||
icon: Icon(Icons.account_circle),
|
||||
),
|
||||
]
|
||||
: <Widget>[
|
||||
ToggleButtons(
|
||||
children: <Widget>[
|
||||
Image.asset(
|
||||
'icons/flags/png/us.png',
|
||||
package: 'country_icons',
|
||||
fit: BoxFit.fitWidth,
|
||||
width: 25,
|
||||
),
|
||||
Image.asset(
|
||||
'icons/flags/png/mm.png',
|
||||
package: 'country_icons',
|
||||
fit: BoxFit.fitWidth,
|
||||
width: 25,
|
||||
)
|
||||
],
|
||||
onPressed: _langChange,
|
||||
isSelected: isSelected,
|
||||
),
|
||||
FlatButton(
|
||||
onPressed: () {
|
||||
Navigator.of(context)
|
||||
.push(BottomUpPageRoute(SigninPage()));
|
||||
},
|
||||
// iconSize: 30,
|
||||
child: Text(
|
||||
"Sign In",
|
||||
style: siginButtonStyle,
|
||||
),
|
||||
),
|
||||
]),
|
||||
body: Container(
|
||||
decoration: BoxDecoration(
|
||||
gradient:
|
||||
// RadialGradient(
|
||||
// center: const Alignment(-0.7, 0.6), // near the top right
|
||||
// radius: 0.6,
|
||||
// colors: [
|
||||
// secondaryColor,
|
||||
// primaryColor, // yellow sun
|
||||
// ],
|
||||
// stops: [0.4, 1.0],
|
||||
// )
|
||||
LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment
|
||||
.bottomCenter, // 10% of the width, so there are ten blinds.
|
||||
colors: [
|
||||
Color(0xd0272262),
|
||||
Color(0xfa272262),
|
||||
// Color(0xa0ff4400),
|
||||
// secondaryColor,
|
||||
], // whitish to gray
|
||||
),
|
||||
// SweepGradient(
|
||||
// center: FractionalOffset.centerLeft,
|
||||
// startAngle: 0.0,
|
||||
// endAngle: math.pi * 2,
|
||||
// colors: const <Color>[
|
||||
// secondaryColor,
|
||||
// primaryColor,
|
||||
// secondaryColor,
|
||||
// primaryColor,
|
||||
// secondaryColor,
|
||||
// ],
|
||||
// stops: const <double>[0.0, 0.25, 0.5, 0.75, 1.0],
|
||||
// ),
|
||||
),
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: ListView(children: [
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Container(
|
||||
padding: EdgeInsets.only(top: 50),
|
||||
child: CircleAvatar(
|
||||
radius: (50),
|
||||
backgroundColor: Colors.white,
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(50),
|
||||
child: Image.asset("assets/logo.jpg"),
|
||||
)),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(10.0),
|
||||
child: Text(
|
||||
"Welcome Cargo Services\nby FCS Trading",
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 18,
|
||||
fontFamily: "Roboto"),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
]),
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
// _buildSmallButton(
|
||||
// "Policies", FontAwesomeIcons.fileContract),
|
||||
_buildSmallButton(
|
||||
"Contact Us", SimpleLineIcons.support),
|
||||
],
|
||||
)
|
||||
],
|
||||
))),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
_langChange(index) {
|
||||
var languageModel = Provider.of<LanguageModel>(context);
|
||||
languageModel.saveLanguage(Translation().supportedLanguages[index]);
|
||||
setState(() {
|
||||
isSelected.asMap().forEach((i, e) {
|
||||
isSelected[i] = false;
|
||||
});
|
||||
isSelected[index] = !isSelected[index];
|
||||
});
|
||||
}
|
||||
|
||||
Widget _buildSmallButton(String text, IconData iconData) {
|
||||
return InkWell(
|
||||
onTap: () => {
|
||||
Navigator.of(context)
|
||||
.push(MaterialPageRoute(builder: (_) => Contact())),
|
||||
},
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(18.0),
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
IconButton(
|
||||
icon: Icon(iconData, color: Colors.white70),
|
||||
color: Colors.white70,
|
||||
onPressed: null),
|
||||
// RaisedButton(onPressed: ()=>{},child: Row(
|
||||
// children: <Widget>[
|
||||
// IconButton(
|
||||
// icon: Icon(iconData, ),
|
||||
// onPressed: null),
|
||||
// Text(text),
|
||||
// ],
|
||||
// ),color: Colors.transparent,
|
||||
// focusColor: Colors.transparent,),
|
||||
Text(
|
||||
text,
|
||||
style: subMenuStyle,
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -122,7 +122,6 @@ class _NotificationListState extends State<NotificationList> {
|
||||
}
|
||||
|
||||
_display(Message msg) {
|
||||
Navigator.push(context, BottomUpPageRoute(MessageDetail(msg:msg))
|
||||
);
|
||||
Navigator.push(context, BottomUpPageRoute(MessageDetail(msg: msg)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ class PickUpEditor extends StatefulWidget {
|
||||
|
||||
class _PickUpEditorState extends State<PickUpEditor> {
|
||||
var dateFormatter = new DateFormat('dd MMM yyyy');
|
||||
final numberFormatter = new NumberFormat("#,###");
|
||||
|
||||
TextEditingController _addressEditingController = new TextEditingController();
|
||||
TextEditingController _fromTimeEditingController =
|
||||
@@ -41,6 +42,7 @@ class _PickUpEditorState extends State<PickUpEditor> {
|
||||
TextEditingController _recipientAddressEditingController =
|
||||
new TextEditingController();
|
||||
TextEditingController _pickupDate = new TextEditingController();
|
||||
TextEditingController _handlingFeeController = new TextEditingController();
|
||||
|
||||
PickUp _pickUp;
|
||||
bool _isLoading = false;
|
||||
@@ -59,6 +61,7 @@ class _PickUpEditorState extends State<PickUpEditor> {
|
||||
_noOfPackageEditingController.text = _pickUp.numberOfPackage.toString();
|
||||
_weightEditingController.text = _pickUp.weight.toString();
|
||||
_pickupDate.text = dateFormatter.format(now);
|
||||
_handlingFeeController.text = numberFormatter.format(_pickUp.handlingFee);
|
||||
|
||||
var mainModel = Provider.of<MainModel>(context, listen: false);
|
||||
_recipientNameEditingController.text = mainModel.recipient.name;
|
||||
@@ -294,6 +297,20 @@ class _PickUpEditorState extends State<PickUpEditor> {
|
||||
FontAwesomeIcons.weightHanging,
|
||||
controller: _weightEditingController),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 20.0),
|
||||
child: widget.pickUp == null
|
||||
? fcsInput(
|
||||
"Handling Fee", FontAwesomeIcons.moneyBill,
|
||||
controller: _handlingFeeController)
|
||||
: widget.pickUp.status == 'Pending'
|
||||
? fcsInput(
|
||||
"Handling Fee", FontAwesomeIcons.moneyBill,
|
||||
controller: _handlingFeeController)
|
||||
: fcsInputReadOnly(
|
||||
"Handling Fee", FontAwesomeIcons.moneyBill,
|
||||
controller: _handlingFeeController),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 20.0),
|
||||
child: fcsInput("Remark", MaterialCommunityIcons.note),
|
||||
@@ -301,59 +318,61 @@ class _PickUpEditorState extends State<PickUpEditor> {
|
||||
SizedBox(height: 10.0),
|
||||
],
|
||||
),
|
||||
ExpansionTile(
|
||||
title: Text('Recipient Information'),
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 20.0),
|
||||
child: widget.pickUp == null
|
||||
? fcsInput("Name", FontAwesomeIcons.user,
|
||||
controller: _recipientNameEditingController)
|
||||
: widget.pickUp.status == 'Pending'
|
||||
? fcsInput("Name", FontAwesomeIcons.user,
|
||||
controller:
|
||||
_recipientNameEditingController)
|
||||
: fcsInputReadOnly(
|
||||
"Name", FontAwesomeIcons.user,
|
||||
controller:
|
||||
_recipientNameEditingController)),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 20.0),
|
||||
child: widget.pickUp == null
|
||||
? fcsInput("Phone Number", Icons.phone,
|
||||
controller: _recipientPhoneEditingController)
|
||||
: widget.pickUp.status == 'Pending'
|
||||
? fcsInput("Phone Number", Icons.phone,
|
||||
controller:
|
||||
_recipientPhoneEditingController)
|
||||
: fcsInputReadOnly(
|
||||
"Phone Number", Icons.phone,
|
||||
controller:
|
||||
_recipientPhoneEditingController)),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 20.0),
|
||||
child: widget.pickUp == null
|
||||
? fcsInput("Address", Icons.location_on,
|
||||
controller:
|
||||
_recipientAddressEditingController)
|
||||
: widget.pickUp.status == 'Pending'
|
||||
? fcsInput("Address", Icons.location_on,
|
||||
controller:
|
||||
_recipientAddressEditingController)
|
||||
: fcsInputReadOnly(
|
||||
"Address", Icons.location_on,
|
||||
controller:
|
||||
_recipientAddressEditingController)),
|
||||
],
|
||||
),
|
||||
mainModel.isCustomer()?Container():
|
||||
ExpansionTile(
|
||||
// ExpansionTile(
|
||||
// title: Text('Recipient Information'),
|
||||
// children: <Widget>[
|
||||
// Padding(
|
||||
// padding: const EdgeInsets.only(left: 20.0),
|
||||
// child: widget.pickUp == null
|
||||
// ? fcsInput("Name", FontAwesomeIcons.user,
|
||||
// controller: _recipientNameEditingController)
|
||||
// : widget.pickUp.status == 'Pending'
|
||||
// ? fcsInput("Name", FontAwesomeIcons.user,
|
||||
// controller:
|
||||
// _recipientNameEditingController)
|
||||
// : fcsInputReadOnly(
|
||||
// "Name", FontAwesomeIcons.user,
|
||||
// controller:
|
||||
// _recipientNameEditingController)),
|
||||
// Padding(
|
||||
// padding: const EdgeInsets.only(left: 20.0),
|
||||
// child: widget.pickUp == null
|
||||
// ? fcsInput("Phone Number", Icons.phone,
|
||||
// controller: _recipientPhoneEditingController)
|
||||
// : widget.pickUp.status == 'Pending'
|
||||
// ? fcsInput("Phone Number", Icons.phone,
|
||||
// controller:
|
||||
// _recipientPhoneEditingController)
|
||||
// : fcsInputReadOnly(
|
||||
// "Phone Number", Icons.phone,
|
||||
// controller:
|
||||
// _recipientPhoneEditingController)),
|
||||
// Padding(
|
||||
// padding: const EdgeInsets.only(left: 20.0),
|
||||
// child: widget.pickUp == null
|
||||
// ? fcsInput("Address", Icons.location_on,
|
||||
// controller:
|
||||
// _recipientAddressEditingController)
|
||||
// : widget.pickUp.status == 'Pending'
|
||||
// ? fcsInput("Address", Icons.location_on,
|
||||
// controller:
|
||||
// _recipientAddressEditingController)
|
||||
// : fcsInputReadOnly(
|
||||
// "Address", Icons.location_on,
|
||||
// controller:
|
||||
// _recipientAddressEditingController)),
|
||||
// ],
|
||||
// ),
|
||||
mainModel.isCustomer()
|
||||
? Container()
|
||||
: ExpansionTile(
|
||||
title: Text('For FCS'),
|
||||
children: <Widget>[
|
||||
widget.pickUp != null
|
||||
? widget.pickUp.status == 'Pending'
|
||||
? Padding(
|
||||
padding: const EdgeInsets.only(left: 20.0),
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: fcsDropDown("Assigned",
|
||||
MaterialCommunityIcons.worker),
|
||||
)
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
import 'package:fcs/model/shipment_model.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:package_info/package_info.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
@@ -13,6 +18,7 @@ import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import '../theme/theme.dart';
|
||||
import 'profile_setting.dart';
|
||||
import 'shipping_address_editor.dart';
|
||||
|
||||
typedef void ProfileCallback();
|
||||
|
||||
@@ -49,7 +55,7 @@ class _ProfileState extends State<Profile> {
|
||||
var languageModel = Provider.of<LanguageModel>(context);
|
||||
MainModel mainModel = Provider.of<MainModel>(context);
|
||||
|
||||
buildLanguage(languageModel);
|
||||
// buildLanguage(languageModel);
|
||||
_selectedDropdown(String selected) {
|
||||
setState(() {
|
||||
selectedLanguage = selected;
|
||||
@@ -58,7 +64,8 @@ class _ProfileState extends State<Profile> {
|
||||
}
|
||||
|
||||
final namebox = Container(
|
||||
padding: EdgeInsets.only(top: 10),
|
||||
// padding: EdgeInsets.only(left: 25.0, right: 25.0),
|
||||
padding: EdgeInsets.only(top: 10, left: 25.0, right: 25.0),
|
||||
child: Container(
|
||||
height: 45.0,
|
||||
child: Row(
|
||||
@@ -96,6 +103,7 @@ class _ProfileState extends State<Profile> {
|
||||
));
|
||||
|
||||
final phonenumberbox = Container(
|
||||
padding: EdgeInsets.only(left: 25.0, right: 25.0),
|
||||
height: 45.0,
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
@@ -132,7 +140,7 @@ class _ProfileState extends State<Profile> {
|
||||
),
|
||||
);
|
||||
final emailBox = Container(
|
||||
padding: EdgeInsets.only(top: 10, left: 0),
|
||||
padding: EdgeInsets.only(top: 10, left: 25.0, right: 25.0),
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
Text(
|
||||
@@ -163,7 +171,7 @@ class _ProfileState extends State<Profile> {
|
||||
),
|
||||
);
|
||||
final languageBox = Container(
|
||||
padding: EdgeInsets.only(bottom: 15, top: 7),
|
||||
padding: EdgeInsets.only(bottom: 0, top: 7, left: 25.0, right: 25.0),
|
||||
child: Container(
|
||||
height: 45.0,
|
||||
child: Row(
|
||||
@@ -223,10 +231,8 @@ class _ProfileState extends State<Profile> {
|
||||
_isLoading = true;
|
||||
});
|
||||
await mainModel.logout();
|
||||
Navigator.pop(context);
|
||||
|
||||
// Navigator.of(context)
|
||||
// .pushNamedAndRemoveUntil("/", ModalRoute.withName('/'));
|
||||
Navigator.of(context).pushNamedAndRemoveUntil(
|
||||
"/home", ModalRoute.withName('/home'));
|
||||
Future.delayed(Duration(seconds: 1), () {
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
@@ -262,15 +268,10 @@ class _ProfileState extends State<Profile> {
|
||||
AppTranslations.of(context).text("profile.title"),
|
||||
),
|
||||
backgroundColor: primaryColor,
|
||||
actions: <Widget>[
|
||||
|
||||
],
|
||||
actions: <Widget>[],
|
||||
),
|
||||
body: ListView(
|
||||
padding: EdgeInsets.only(
|
||||
left: 25.0,
|
||||
right: 25.0,
|
||||
),
|
||||
// padding: EdgeInsets.only(left: 25.0, right: 25.0),
|
||||
shrinkWrap: true,
|
||||
children: <Widget>[
|
||||
Row(
|
||||
@@ -290,7 +291,10 @@ class _ProfileState extends State<Profile> {
|
||||
? Container()
|
||||
: emailBox,
|
||||
languageBox,
|
||||
SizedBox(height: 50,),
|
||||
getShippingAddressList(context),
|
||||
SizedBox(
|
||||
height: 50,
|
||||
),
|
||||
logoutbutton,
|
||||
],
|
||||
),
|
||||
@@ -298,6 +302,110 @@ class _ProfileState extends State<Profile> {
|
||||
);
|
||||
}
|
||||
|
||||
Widget getShippingAddressList(BuildContext context) {
|
||||
var shipmentModel = Provider.of<ShipmentModel>(context);
|
||||
return Container(
|
||||
padding: EdgeInsets.only(top: 5, left: 10),
|
||||
child: ExpansionTile(
|
||||
title: Text(
|
||||
"Shipping Addresses",
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold, fontStyle: FontStyle.normal),
|
||||
),
|
||||
children: <Widget>[
|
||||
Container(
|
||||
child: SingleChildScrollView(
|
||||
scrollDirection: Axis.horizontal,
|
||||
child: MyDataTable(
|
||||
headingRowHeight: 40,
|
||||
columnSpacing: 50,
|
||||
columns: [
|
||||
MyDataColumn(
|
||||
label: Text(
|
||||
"Full Name",
|
||||
style: TextStyle(
|
||||
fontSize: 15,
|
||||
color: Colors.grey[600],
|
||||
),
|
||||
)),
|
||||
MyDataColumn(
|
||||
label: Text(
|
||||
"Phone Number",
|
||||
style: TextStyle(
|
||||
fontSize: 15,
|
||||
color: Colors.grey[600],
|
||||
),
|
||||
)),
|
||||
MyDataColumn(
|
||||
label: Text(
|
||||
"Delete",
|
||||
style: TextStyle(
|
||||
fontSize: 15,
|
||||
color: Colors.grey[600],
|
||||
),
|
||||
)),
|
||||
],
|
||||
rows: getAddressRows(shipmentModel.shippingAddresses),
|
||||
),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
padding: EdgeInsets.only(top: 20, bottom: 15, right: 15),
|
||||
child: Align(
|
||||
alignment: Alignment.bottomRight,
|
||||
child: Container(
|
||||
width: 120,
|
||||
height: 40,
|
||||
child: FloatingActionButton.extended(
|
||||
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
||||
onPressed: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
BottomUpPageRoute(ShippingAddressEditor()),
|
||||
);
|
||||
},
|
||||
label: Text(
|
||||
'Add Shipping\nAddress',
|
||||
style: TextStyle(fontSize: 12),
|
||||
),
|
||||
backgroundColor: primaryColor,
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
List<MyDataRow> getAddressRows(List<ShippingAddress> addresses) {
|
||||
return addresses.map((s) {
|
||||
return MyDataRow(
|
||||
onSelectChanged: (selected) {
|
||||
Navigator.push(
|
||||
context,
|
||||
BottomUpPageRoute(ShippingAddressEditor(shippingAddress: s)),
|
||||
);
|
||||
},
|
||||
cells: [
|
||||
MyDataCell(
|
||||
new Text(
|
||||
s.fullName,
|
||||
style: textStyle,
|
||||
),
|
||||
),
|
||||
MyDataCell(
|
||||
new Text(
|
||||
s.phoneNumber,
|
||||
style: textStyle,
|
||||
),
|
||||
),
|
||||
MyDataCell(IconButton(icon: Icon(Icons.delete), onPressed: null)),
|
||||
],
|
||||
);
|
||||
}).toList();
|
||||
}
|
||||
|
||||
Widget getPrivilegeBox(BuildContext context) {
|
||||
var languageModel = Provider.of<LanguageModel>(context);
|
||||
var userModel = Provider.of<UserModel>(context);
|
||||
|
||||
140
lib/pages/shipping_address_editor.dart
Normal file
140
lib/pages/shipping_address_editor.dart
Normal file
@@ -0,0 +1,140 @@
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/vo/shipping_address.dart';
|
||||
import 'package:fcs/widget/local_text.dart';
|
||||
import 'package:flutter_icons/flutter_icons.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:fcs/widget/progress.dart';
|
||||
|
||||
import '../theme/theme.dart';
|
||||
|
||||
class ShippingAddressEditor extends StatefulWidget {
|
||||
final ShippingAddress shippingAddress;
|
||||
ShippingAddressEditor({this.shippingAddress});
|
||||
|
||||
@override
|
||||
_ShippingAddressEditorState createState() => _ShippingAddressEditorState();
|
||||
}
|
||||
|
||||
class _ShippingAddressEditorState extends State<ShippingAddressEditor> {
|
||||
TextEditingController _nameController = new TextEditingController();
|
||||
TextEditingController _address1Controller = new TextEditingController();
|
||||
TextEditingController _address2Controller = new TextEditingController();
|
||||
TextEditingController _cityController = new TextEditingController();
|
||||
TextEditingController _stateController = new TextEditingController();
|
||||
TextEditingController _phoneController = new TextEditingController();
|
||||
|
||||
ShippingAddress _shippingAddress = new ShippingAddress();
|
||||
|
||||
bool _isLoading = false;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
if (widget.shippingAddress != null) {
|
||||
_shippingAddress = widget.shippingAddress;
|
||||
_nameController.text = _shippingAddress.fullName;
|
||||
_address1Controller.text = _shippingAddress.addressLine1;
|
||||
_address2Controller.text = _shippingAddress.addressLine2;
|
||||
_cityController.text = _shippingAddress.city;
|
||||
_stateController.text = _shippingAddress.state;
|
||||
_phoneController.text = _shippingAddress.phoneNumber;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final usaAddress =
|
||||
fcsInput('Full Name', Icons.text_format, controller: _nameController);
|
||||
final mmAddress = fcsInput('Address Line 1', Icons.location_on,
|
||||
controller: _address1Controller);
|
||||
|
||||
final contactNumber = fcsInput('Address Line 2', Icons.location_on,
|
||||
controller: _address2Controller);
|
||||
final mmContactNumber =
|
||||
fcsInput('City', Icons.location_city, controller: _cityController);
|
||||
|
||||
final mailBox =
|
||||
fcsInput('State/Region', Entypo.location, controller: _stateController);
|
||||
final fbLinkBox =
|
||||
fcsInput('Phone Number', Icons.phone, controller: _phoneController);
|
||||
|
||||
return LocalProgress(
|
||||
inAsyncCall: _isLoading,
|
||||
child: Scaffold(
|
||||
appBar: AppBar(
|
||||
centerTitle: true,
|
||||
leading: new IconButton(
|
||||
icon: new Icon(Icons.close),
|
||||
onPressed: () => Navigator.of(context).pop(),
|
||||
),
|
||||
backgroundColor: primaryColor,
|
||||
title: LocalText(
|
||||
context,
|
||||
'user.form.shipping_address',
|
||||
color: Colors.white,
|
||||
fontSize: 20,
|
||||
),
|
||||
),
|
||||
body: Card(
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(left: 20.0),
|
||||
child: ListView(children: <Widget>[
|
||||
usaAddress,
|
||||
SizedBox(height: 10),
|
||||
mmAddress,
|
||||
SizedBox(height: 10),
|
||||
contactNumber,
|
||||
SizedBox(height: 10),
|
||||
mmContactNumber,
|
||||
SizedBox(height: 10),
|
||||
mailBox,
|
||||
SizedBox(height: 10),
|
||||
fbLinkBox,
|
||||
SizedBox(height: 10),
|
||||
]),
|
||||
)),
|
||||
widget.shippingAddress == null
|
||||
? Align(
|
||||
alignment: Alignment.bottomCenter,
|
||||
child: Center(
|
||||
child: Container(
|
||||
width: 250,
|
||||
child: FlatButton(
|
||||
child: Text('Create'),
|
||||
color: primaryColor,
|
||||
textColor: Colors.white,
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
),
|
||||
)))
|
||||
: Align(
|
||||
alignment: Alignment.bottomCenter,
|
||||
child: Center(
|
||||
child: Container(
|
||||
width: 250,
|
||||
child: FlatButton(
|
||||
child: Text('Update'),
|
||||
color: primaryColor,
|
||||
textColor: Colors.white,
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
),
|
||||
))),
|
||||
SizedBox(height: 10)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
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:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
@@ -7,6 +8,7 @@ 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';
|
||||
|
||||
class UserEditPage extends StatefulWidget {
|
||||
@override
|
||||
@@ -108,6 +110,6 @@ class _UserEditPageState extends State<UserEditPage> {
|
||||
}
|
||||
|
||||
_submit() async {
|
||||
Navigator.pop(context);
|
||||
Navigator.pushNamedAndRemoveUntil(context, "/homeLogin", (r) => false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ class PickUp {
|
||||
String toTime;
|
||||
int numberOfPackage;
|
||||
int weight;
|
||||
int handlingFee;
|
||||
String address;
|
||||
String status;
|
||||
DateTime date;
|
||||
@@ -18,6 +19,7 @@ class PickUp {
|
||||
this.toTime,
|
||||
this.numberOfPackage,
|
||||
this.weight,
|
||||
this.handlingFee,
|
||||
this.address,
|
||||
this.status,
|
||||
this.date});
|
||||
|
||||
15
lib/vo/shipping_address.dart
Normal file
15
lib/vo/shipping_address.dart
Normal file
@@ -0,0 +1,15 @@
|
||||
class ShippingAddress {
|
||||
String fullName;
|
||||
String addressLine1;
|
||||
String addressLine2;
|
||||
String city;
|
||||
String state;
|
||||
String phoneNumber;
|
||||
ShippingAddress(
|
||||
{this.fullName,
|
||||
this.addressLine1,
|
||||
this.addressLine2,
|
||||
this.city,
|
||||
this.state,
|
||||
this.phoneNumber});
|
||||
}
|
||||
Reference in New Issue
Block a user