add packages
This commit is contained in:
@@ -56,7 +56,6 @@ class _FCSProfilePageState extends State<FCSProfilePage> {
|
||||
));
|
||||
|
||||
final mmAddress = Container(
|
||||
height: 50.0,
|
||||
child: Row(children: <Widget>[
|
||||
Expanded(
|
||||
child: FCSTextField(
|
||||
@@ -67,7 +66,6 @@ class _FCSProfilePageState extends State<FCSProfilePage> {
|
||||
);
|
||||
|
||||
final contactNumber = Container(
|
||||
height: 50.0,
|
||||
child: Row(children: <Widget>[
|
||||
Expanded(
|
||||
child: FCSTextField(
|
||||
@@ -78,7 +76,6 @@ class _FCSProfilePageState extends State<FCSProfilePage> {
|
||||
);
|
||||
|
||||
final mmContactNumber = Container(
|
||||
height: 50.0,
|
||||
child: Row(children: <Widget>[
|
||||
Expanded(
|
||||
child: FCSTextField(
|
||||
@@ -89,7 +86,6 @@ class _FCSProfilePageState extends State<FCSProfilePage> {
|
||||
);
|
||||
|
||||
final mailBox = Container(
|
||||
height: 50.0,
|
||||
child: Row(children: <Widget>[
|
||||
Expanded(
|
||||
child: FCSTextField(
|
||||
@@ -100,7 +96,6 @@ class _FCSProfilePageState extends State<FCSProfilePage> {
|
||||
);
|
||||
|
||||
final fbLinkBox = Container(
|
||||
height: 50.0,
|
||||
child: Row(children: <Widget>[
|
||||
Expanded(
|
||||
child: FCSTextField(
|
||||
@@ -112,28 +107,29 @@ class _FCSProfilePageState extends State<FCSProfilePage> {
|
||||
inAsyncCall: _isLoading,
|
||||
child: Scaffold(
|
||||
appBar: AppBar(
|
||||
centerTitle: true,
|
||||
backgroundColor: primaryColor,
|
||||
title: Text('Profile'),
|
||||
title: Text('FCS PROFILE'),
|
||||
),
|
||||
body: Card(
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(20.0),
|
||||
padding: const EdgeInsets.only(left: 20.0),
|
||||
child: ListView(children: <Widget>[
|
||||
usaAddress,
|
||||
SizedBox(height: 15),
|
||||
SizedBox(height: 10),
|
||||
mmAddress,
|
||||
SizedBox(height: 15),
|
||||
SizedBox(height: 10),
|
||||
contactNumber,
|
||||
SizedBox(height: 15),
|
||||
SizedBox(height: 10),
|
||||
mmContactNumber,
|
||||
SizedBox(height: 15),
|
||||
SizedBox(height: 10),
|
||||
mailBox,
|
||||
SizedBox(height: 15),
|
||||
SizedBox(height: 10),
|
||||
fbLinkBox,
|
||||
SizedBox(height: 15),
|
||||
SizedBox(height: 10),
|
||||
]),
|
||||
)),
|
||||
widget.pickUp == null
|
||||
@@ -143,8 +139,6 @@ class _FCSProfilePageState extends State<FCSProfilePage> {
|
||||
child: Container(
|
||||
width: 250,
|
||||
child: FlatButton(
|
||||
shape: new RoundedRectangleBorder(
|
||||
borderRadius: new BorderRadius.circular(10)),
|
||||
child: Text('Update'),
|
||||
color: primaryColor,
|
||||
textColor: Colors.white,
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'package:country_code_picker/country_code.dart';
|
||||
import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/pages/shipment_list.dart';
|
||||
import 'package:fcs/pages_fcs/package_list.dart';
|
||||
@@ -94,30 +95,15 @@ class _HomePageState extends State<HomePage> {
|
||||
final numberFormatter = new NumberFormat("#,###");
|
||||
|
||||
String pin;
|
||||
List<bool> isSelected = [true, false];
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
login = Provider.of<MainModel>(context).isLogin();
|
||||
final packagesBtn = _buildBtn2("package.name",
|
||||
icon: Octicons.package,
|
||||
btnCallback: () => Navigator.of(context)
|
||||
.push(MaterialPageRoute(builder: (_) => PackageList())));
|
||||
|
||||
final announcementBtn = _buildBtn2("announcement.title",
|
||||
icon: Icons.announcement,
|
||||
btnCallback: () => Navigator.of(context)
|
||||
.push(MaterialPageRoute(builder: (_) => AnnouncementList())));
|
||||
|
||||
final reportBtn = _buildBtn2("report.title",
|
||||
icon: FontAwesomeIcons.paperPlane,
|
||||
imgIcon: Image.asset(
|
||||
"assets/report.png",
|
||||
width: 50,
|
||||
height: 50,
|
||||
// color: primaryColor,
|
||||
),
|
||||
btnCallback: () => Navigator.of(context)
|
||||
.push(MaterialPageRoute(builder: (_) => ReportList())));
|
||||
btnCallback: () =>
|
||||
Navigator.of(context).push(BottomUpPageRoute(PackageList())));
|
||||
|
||||
final pickUpBtn = _buildBtn2("pickup",
|
||||
icon: MaterialCommunityIcons.directions,
|
||||
@@ -130,9 +116,10 @@ class _HomePageState extends State<HomePage> {
|
||||
Navigator.of(context).push(BottomUpPageRoute(ShipmentRates())));
|
||||
|
||||
final fcsProfileBtn = _buildBtn2("profile.title",
|
||||
icon: Icons.account_circle,
|
||||
btnCallback: () => Navigator.of(context)
|
||||
.push(MaterialPageRoute(builder: (_) => FCSProfilePage())));
|
||||
// imgIcon: Image.asset("assets/logo_btn.png", height: 25,color:Colors.white),
|
||||
icon: MaterialCommunityIcons.home_city,
|
||||
btnCallback: () =>
|
||||
Navigator.of(context).push(BottomUpPageRoute(FCSProfilePage())));
|
||||
|
||||
final shipmentBtn = _buildBtn2("shipment.title",
|
||||
icon: Ionicons.ios_airplane,
|
||||
@@ -142,19 +129,8 @@ class _HomePageState extends State<HomePage> {
|
||||
height: 50,
|
||||
color: primaryColor,
|
||||
),
|
||||
btnCallback: () => Navigator.of(context)
|
||||
.push(MaterialPageRoute(builder: (_) => ShipmentList())));
|
||||
|
||||
final termBtn = _buildBtn2("term.title",
|
||||
icon: FontAwesomeIcons.fileContract,
|
||||
imgIcon: Image.asset(
|
||||
"assets/term.png",
|
||||
width: 40,
|
||||
height: 30,
|
||||
color: primaryColor,
|
||||
), btnCallback: () {
|
||||
Navigator.push(context, MaterialPageRoute(builder: (context) => Term()));
|
||||
});
|
||||
btnCallback: () =>
|
||||
Navigator.of(context).push(BottomUpPageRoute(ShipmentList())));
|
||||
|
||||
final buyingBtn = _buildBtn2("buy_online",
|
||||
icon: MaterialCommunityIcons.cart_outline, btnCallback: () {
|
||||
@@ -163,8 +139,8 @@ class _HomePageState extends State<HomePage> {
|
||||
);
|
||||
});
|
||||
|
||||
final notiBtn = _buildBtn2("notifications.title", icon: Icons.notifications,
|
||||
btnCallback: () {
|
||||
final notiBtn =
|
||||
_buildBtn2("message.btn", icon: Icons.message, btnCallback: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
BottomUpPageRoute(NotificationList()),
|
||||
@@ -172,17 +148,19 @@ class _HomePageState extends State<HomePage> {
|
||||
});
|
||||
|
||||
final staffBtn = _buildBtn2("staff.title",
|
||||
icon: SimpleLineIcons.people,
|
||||
btnCallback: () => Navigator.of(context)
|
||||
.push(MaterialPageRoute(builder: (_) => StaffList())));
|
||||
icon: MaterialCommunityIcons.worker,
|
||||
btnCallback: () =>
|
||||
Navigator.of(context).push(BottomUpPageRoute(StaffList())));
|
||||
|
||||
final _bankAccountsBtn = _buildBtn2("banks.title",
|
||||
icon: FontAwesomeIcons.moneyCheck, btnCallback: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => BankAccounts()),
|
||||
);
|
||||
});
|
||||
final customersBtn = _buildBtn2("customers.btn",
|
||||
icon: Feather.users,
|
||||
btnCallback: () =>
|
||||
Navigator.of(context).push(BottomUpPageRoute(StaffList())));
|
||||
|
||||
final invoicesBtn = _buildBtn2("invoices.btn",
|
||||
icon: FontAwesomeIcons.fileInvoice,
|
||||
btnCallback: () =>
|
||||
Navigator.of(context).push(BottomUpPageRoute(StaffList())));
|
||||
|
||||
List<Widget> widgets = [];
|
||||
widgets.add(buyingBtn);
|
||||
@@ -190,13 +168,11 @@ class _HomePageState extends State<HomePage> {
|
||||
widgets.add(shipmentBtn);
|
||||
widgets.add(notiBtn);
|
||||
widgets.add(staffBtn);
|
||||
widgets.add(announcementBtn);
|
||||
widgets.add(fcsProfileBtn);
|
||||
widgets.add(shipmentCostBtn);
|
||||
widgets.add(reportBtn);
|
||||
widgets.add(termBtn);
|
||||
widgets.add(_bankAccountsBtn);
|
||||
widgets.add(packagesBtn);
|
||||
widgets.add(customersBtn);
|
||||
widgets.add(invoicesBtn);
|
||||
|
||||
return OfflineRedirect(
|
||||
child: FlavorBanner(
|
||||
@@ -210,16 +186,23 @@ class _HomePageState extends State<HomePage> {
|
||||
),
|
||||
actions: login
|
||||
? <Widget>[
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) => Contact()),
|
||||
);
|
||||
},
|
||||
iconSize: 30,
|
||||
icon: Icon(Icons.notifications),
|
||||
ToggleButtons(
|
||||
children: <Widget>[
|
||||
Image.asset(
|
||||
'icons/flags/png/gb.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: () {
|
||||
@@ -234,6 +217,24 @@ class _HomePageState extends State<HomePage> {
|
||||
),
|
||||
]
|
||||
: <Widget>[
|
||||
ToggleButtons(
|
||||
children: <Widget>[
|
||||
Image.asset(
|
||||
'icons/flags/png/gb.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.push(
|
||||
@@ -244,21 +245,10 @@ class _HomePageState extends State<HomePage> {
|
||||
},
|
||||
// iconSize: 30,
|
||||
child: Text(
|
||||
"Sign in",
|
||||
"Sign In",
|
||||
style: siginButtonStyle,
|
||||
),
|
||||
),
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) => SigninPage()),
|
||||
);
|
||||
},
|
||||
iconSize: 30,
|
||||
icon: Icon(MaterialCommunityIcons.login),
|
||||
)
|
||||
),
|
||||
]),
|
||||
body: Container(
|
||||
decoration: BoxDecoration(
|
||||
@@ -321,6 +311,15 @@ class _HomePageState extends State<HomePage> {
|
||||
);
|
||||
}
|
||||
|
||||
_langChange(index) {
|
||||
setState(() {
|
||||
isSelected.asMap().forEach((i, e) {
|
||||
isSelected[i] = false;
|
||||
});
|
||||
isSelected[index] = !isSelected[index];
|
||||
});
|
||||
}
|
||||
|
||||
Widget _buildTile(Widget child, {Function() onTap}) {
|
||||
return Material(
|
||||
elevation: 0,
|
||||
@@ -403,7 +402,9 @@ class _HomePageState extends State<HomePage> {
|
||||
child: SizedBox(
|
||||
width: 60,
|
||||
height: 60,
|
||||
child: Icon(icon, color: Colors.white, size: 30)),
|
||||
child: icon == null
|
||||
? Container(width: 10, height: 10, child: imgIcon)
|
||||
: Icon(icon, color: Colors.white, size: 30)),
|
||||
onTap: btnCallback,
|
||||
),
|
||||
),
|
||||
|
||||
@@ -54,8 +54,10 @@ class _InstructionPageState extends State<InstructionPage> {
|
||||
body: Container(
|
||||
padding: EdgeInsets.only(left: 5, right: 5, top: 5),
|
||||
child: Card(elevation: 0,
|
||||
child: FittedBox(
|
||||
child: Image.asset(widget.image), fit: BoxFit.contain)),
|
||||
child: Expanded(
|
||||
child: FittedBox(
|
||||
child: Image.asset(widget.image), fit: BoxFit.contain),
|
||||
)),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
@@ -2,8 +2,12 @@ import 'package:fcs/model/main_model.dart';
|
||||
import 'package:fcs/model/pickup_model.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
import 'package:fcs/vo/pickup.dart';
|
||||
import 'package:fcs/widget/fcs_text_field.dart';
|
||||
import 'package:fcs/widget/fcs_text_field_readonly.dart';
|
||||
import 'package:flutter_datetime_picker/flutter_datetime_picker.dart';
|
||||
import 'package:flutter_icons/flutter_icons.dart';
|
||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/widget/localization/app_translations.dart';
|
||||
|
||||
@@ -21,6 +25,8 @@ class PickUpEditor extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _PickUpEditorState extends State<PickUpEditor> {
|
||||
var dateFormatter = new DateFormat('dd MMM yyyy');
|
||||
|
||||
TextEditingController _addressEditingController = new TextEditingController();
|
||||
TextEditingController _fromTimeEditingController =
|
||||
new TextEditingController();
|
||||
@@ -28,9 +34,17 @@ class _PickUpEditorState extends State<PickUpEditor> {
|
||||
TextEditingController _noOfPackageEditingController =
|
||||
new TextEditingController();
|
||||
TextEditingController _weightEditingController = new TextEditingController();
|
||||
TextEditingController _recipientNameEditingController =
|
||||
new TextEditingController();
|
||||
TextEditingController _recipientPhoneEditingController =
|
||||
new TextEditingController();
|
||||
TextEditingController _recipientAddressEditingController =
|
||||
new TextEditingController();
|
||||
TextEditingController _pickupDate = new TextEditingController();
|
||||
|
||||
PickUp _pickUp;
|
||||
bool _isLoading = false;
|
||||
var now = new DateTime.now();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -42,6 +56,13 @@ class _PickUpEditorState extends State<PickUpEditor> {
|
||||
_toTimeEditingController.text = _pickUp.toTime;
|
||||
_noOfPackageEditingController.text = _pickUp.numberOfPackage.toString();
|
||||
_weightEditingController.text = _pickUp.weight.toString();
|
||||
_pickupDate.text = dateFormatter.format(now);
|
||||
|
||||
var mainModel = Provider.of<MainModel>(context, listen: false);
|
||||
_recipientNameEditingController.text = mainModel.recipient.name;
|
||||
_recipientPhoneEditingController.text = mainModel.recipient.phoneNumber;
|
||||
_recipientAddressEditingController.text =
|
||||
mainModel.recipient.shippingAddress;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,6 +84,7 @@ class _PickUpEditorState extends State<PickUpEditor> {
|
||||
minLines: 2,
|
||||
decoration: new InputDecoration(
|
||||
labelText: 'Pickup Address',
|
||||
disabledBorder: InputBorder.none,
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(color: primaryColor, width: 1.0)),
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
@@ -70,6 +92,12 @@ class _PickUpEditorState extends State<PickUpEditor> {
|
||||
),
|
||||
));
|
||||
|
||||
final pickUpAddressReadOnly = Container(
|
||||
child: FCSTextFieldReadOnly(
|
||||
controller: _addressEditingController,
|
||||
label: 'Pickup Address',
|
||||
));
|
||||
|
||||
final pickupTime = Container(
|
||||
height: 50.0,
|
||||
child: Row(children: <Widget>[
|
||||
@@ -106,6 +134,24 @@ class _PickUpEditorState extends State<PickUpEditor> {
|
||||
]),
|
||||
);
|
||||
|
||||
final pickupTimeReadOnly = Container(
|
||||
height: 50.0,
|
||||
child: Row(children: <Widget>[
|
||||
Container(
|
||||
width: 70.0,
|
||||
child: FCSTextFieldReadOnly(
|
||||
controller: _fromTimeEditingController, label: 'From')),
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Text(' - '),
|
||||
),
|
||||
Container(
|
||||
width: 70.0,
|
||||
child: FCSTextFieldReadOnly(
|
||||
controller: _toTimeEditingController, label: 'To')),
|
||||
]),
|
||||
);
|
||||
|
||||
final noOfPackageBox = Container(
|
||||
height: 50.0,
|
||||
child: Row(children: <Widget>[
|
||||
@@ -125,25 +171,58 @@ class _PickUpEditorState extends State<PickUpEditor> {
|
||||
]),
|
||||
);
|
||||
|
||||
final weightBox = Container(
|
||||
final noOfPackageBoxReadonly = Container(
|
||||
height: 50.0,
|
||||
child: Row(children: <Widget>[
|
||||
Expanded(
|
||||
child: TextFormField(
|
||||
controller: _weightEditingController,
|
||||
cursorColor: primaryColor,
|
||||
textAlign: TextAlign.left,
|
||||
decoration: new InputDecoration(
|
||||
labelText: 'Total Weight (lb)',
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(color: primaryColor, width: 1.0)),
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(color: primaryColor, width: 1.0)),
|
||||
),
|
||||
)),
|
||||
child: FCSTextFieldReadOnly(
|
||||
controller: _noOfPackageEditingController,
|
||||
label: 'Number of Packages')),
|
||||
]),
|
||||
);
|
||||
|
||||
final requestDateBox = Container(
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
DatePicker.showDatePicker(
|
||||
context,
|
||||
showTitleActions: true,
|
||||
currentTime: _pickupDate.text == ""
|
||||
? null
|
||||
: dateFormatter.parse(_pickupDate.text),
|
||||
minTime: DateTime.now(),
|
||||
maxTime: DateTime(2030, 12, 31),
|
||||
onConfirm: (date) {},
|
||||
locale: LocaleType.en,
|
||||
);
|
||||
},
|
||||
child: TextFormField(
|
||||
controller: _pickupDate,
|
||||
autofocus: false,
|
||||
cursorColor: primaryColor,
|
||||
style: textStyle,
|
||||
enabled: false,
|
||||
keyboardType: TextInputType.datetime,
|
||||
decoration: new InputDecoration(
|
||||
border: InputBorder.none,
|
||||
focusedBorder: InputBorder.none,
|
||||
labelText: AppTranslations.of(context).text("pickup.date"),
|
||||
// labelStyle: languageModel.isEng ? labelStyle : labelStyleMM,
|
||||
contentPadding:
|
||||
EdgeInsets.symmetric(vertical: 10.0, horizontal: 0.0),
|
||||
icon: Icon(
|
||||
Icons.date_range,
|
||||
color: Colors.black87,
|
||||
)),
|
||||
validator: (value) {
|
||||
if (value.isEmpty) {
|
||||
return AppTranslations.of(context).text("do.form.date");
|
||||
}
|
||||
return null;
|
||||
},
|
||||
),
|
||||
));
|
||||
|
||||
MainModel mainModel = Provider.of<MainModel>(context);
|
||||
|
||||
return LocalProgress(
|
||||
@@ -166,53 +245,198 @@ class _PickUpEditorState extends State<PickUpEditor> {
|
||||
padding: const EdgeInsets.all(10.0),
|
||||
child: ListView(children: <Widget>[
|
||||
Center(child: nameWidget(mainModel.customer.name)),
|
||||
phoneWidget(context, mainModel.customer.phoneNumber),
|
||||
Row(
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(right: 8.0),
|
||||
child: Icon(Icons.location_on),
|
||||
Center(child: nameWidget(mainModel.customer.phoneNumber)),
|
||||
Center(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(left: 10.0, top: 8),
|
||||
child: Text(
|
||||
'#P200304',
|
||||
style: TextStyle(
|
||||
color: Colors.black87,
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.bold),
|
||||
),
|
||||
Expanded(child: pickUpAddress),
|
||||
],
|
||||
),
|
||||
SizedBox(height: 25),
|
||||
Row(
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(right: 8.0),
|
||||
child: Icon(Icons.timer),
|
||||
),
|
||||
Text('Pickup Time',
|
||||
style: TextStyle(color: Colors.grey, fontSize: 18)),
|
||||
],
|
||||
),
|
||||
SizedBox(height: 5),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 33),
|
||||
child: pickupTime,
|
||||
),
|
||||
),
|
||||
SizedBox(height: 15),
|
||||
Row(
|
||||
ExpansionTile(
|
||||
title: Text('Pickup Location / Time'),
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(right: 8.0),
|
||||
child: Icon(Octicons.package),
|
||||
padding: const EdgeInsets.only(left: 20.0),
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(right: 8.0),
|
||||
child: Icon(Icons.location_on),
|
||||
),
|
||||
Expanded(
|
||||
child: widget.pickUp == null
|
||||
? pickUpAddress
|
||||
: widget.pickUp.status == 'Pending'
|
||||
? pickUpAddress
|
||||
: pickUpAddressReadOnly),
|
||||
],
|
||||
),
|
||||
),
|
||||
Expanded(child: noOfPackageBox),
|
||||
SizedBox(height: 15),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 20.0),
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(right: 8.0),
|
||||
child: Icon(Icons.timer),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 8.0),
|
||||
child: Text('Pickup Time',
|
||||
style: TextStyle(
|
||||
color: Colors.grey, fontSize: 14)),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 20.0),
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
SizedBox(height: 5),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 33),
|
||||
child: widget.pickUp == null
|
||||
? pickupTime
|
||||
: widget.pickUp.status == 'Pending'
|
||||
? pickupTime
|
||||
: pickupTimeReadOnly,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 5),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 20.0),
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
SizedBox(height: 5),
|
||||
Container(height: 50.0, child: requestDateBox)
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
height: 15,
|
||||
ExpansionTile(
|
||||
title: Text('Package Informations'),
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 20.0),
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(right: 8.0),
|
||||
child: Icon(Octicons.package),
|
||||
),
|
||||
Expanded(
|
||||
child: widget.pickUp == null
|
||||
? noOfPackageBox
|
||||
: widget.pickUp.status == 'Pending'
|
||||
? noOfPackageBox
|
||||
: noOfPackageBoxReadonly),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 15,
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 20.0),
|
||||
child: widget.pickUp == null
|
||||
? fcsInput("Total Weight (lb)",
|
||||
FontAwesomeIcons.weightHanging,
|
||||
controller: _weightEditingController)
|
||||
: widget.pickUp.status == 'Pending'
|
||||
? fcsInput("Total Weight (lb)",
|
||||
FontAwesomeIcons.weightHanging,
|
||||
controller: _weightEditingController)
|
||||
: fcsInputReadOnly("Total Weight (lb)",
|
||||
FontAwesomeIcons.weightHanging,
|
||||
controller: _weightEditingController),
|
||||
),
|
||||
SizedBox(height: 15),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 20.0),
|
||||
child: fcsInput("Remark", MaterialCommunityIcons.note),
|
||||
),
|
||||
SizedBox(height: 25),
|
||||
],
|
||||
),
|
||||
fcsInput("Total Weight (lb)", FontAwesomeIcons.weightHanging),
|
||||
SizedBox(
|
||||
height: 15,
|
||||
ExpansionTile(
|
||||
title: Text('Recipient Informations'),
|
||||
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)),
|
||||
SizedBox(height: 25),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 20.0),
|
||||
child: widget.pickUp == null
|
||||
? fcsInput("Phone Number", FontAwesomeIcons.phone,
|
||||
controller: _recipientPhoneEditingController)
|
||||
: widget.pickUp.status == 'Pending'
|
||||
? fcsInput(
|
||||
"Phone Number", FontAwesomeIcons.phone,
|
||||
controller:
|
||||
_recipientPhoneEditingController)
|
||||
: fcsInputReadOnly(
|
||||
"Phone Number", FontAwesomeIcons.phone,
|
||||
controller:
|
||||
_recipientPhoneEditingController)),
|
||||
SizedBox(height: 25),
|
||||
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)),
|
||||
SizedBox(height: 25),
|
||||
],
|
||||
),
|
||||
ExpansionTile(
|
||||
title: Text('For FCS'),
|
||||
children: <Widget>[
|
||||
widget.pickUp != null
|
||||
? widget.pickUp.status == 'Pending'
|
||||
? Padding(
|
||||
padding: const EdgeInsets.only(left: 20.0),
|
||||
child: fcsDropDown("Assigned",
|
||||
MaterialCommunityIcons.worker),
|
||||
)
|
||||
: Container()
|
||||
: Container(),
|
||||
SizedBox(
|
||||
height: 25,
|
||||
),
|
||||
],
|
||||
),
|
||||
widget.pickUp != null
|
||||
? fcsDropDown("Assigned", MaterialCommunityIcons.worker)
|
||||
: Container(),
|
||||
fcsInput("Remark", MaterialCommunityIcons.note)
|
||||
]),
|
||||
)),
|
||||
widget.pickUp == null
|
||||
@@ -233,20 +457,35 @@ class _PickUpEditorState extends State<PickUpEditor> {
|
||||
: Container(
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Align(
|
||||
alignment: Alignment.bottomCenter,
|
||||
child: Center(
|
||||
child: Container(
|
||||
width: 250,
|
||||
child: FlatButton(
|
||||
child: Text('Update'),
|
||||
color: primaryColor,
|
||||
textColor: Colors.white,
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
),
|
||||
))),
|
||||
widget.pickUp.status == 'Assigned'
|
||||
? Align(
|
||||
alignment: Alignment.bottomCenter,
|
||||
child: Center(
|
||||
child: Container(
|
||||
width: 250,
|
||||
child: FlatButton(
|
||||
child: Text('Complete'),
|
||||
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);
|
||||
},
|
||||
),
|
||||
))),
|
||||
Align(
|
||||
alignment: Alignment.bottomCenter,
|
||||
child: Center(
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'package:fcs/model/pickup_model.dart';
|
||||
import 'package:fcs/pages/pickup_editor.dart';
|
||||
import 'package:fcs/vo/pickup.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_icons/flutter_icons.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:fcs/model/buyer_model.dart';
|
||||
import 'package:fcs/pages/util.dart';
|
||||
@@ -56,6 +57,12 @@ class _PickupListRowState extends State<PickupListRow> {
|
||||
padding: const EdgeInsets.symmetric(vertical: 16.0),
|
||||
child: new Row(
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: EdgeInsets.all(5.0),
|
||||
child: Icon(
|
||||
MaterialCommunityIcons.directions,
|
||||
color: primaryColor,
|
||||
)),
|
||||
new Expanded(
|
||||
child: new Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
@@ -71,7 +78,9 @@ class _PickupListRowState extends State<PickupListRow> {
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 10.0, top: 10),
|
||||
child: new Text(
|
||||
_pickUp.id == null ? '' : "Last ${_pickUp.last} days" ,
|
||||
_pickUp.id == null
|
||||
? ''
|
||||
: "Last ${_pickUp.last} days",
|
||||
style: new TextStyle(
|
||||
fontSize: 15.0, color: Colors.grey),
|
||||
),
|
||||
@@ -90,7 +99,7 @@ class _PickupListRowState extends State<PickupListRow> {
|
||||
child: getStatus(_pickUp.status),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 8.0,top:5,bottom: 5),
|
||||
padding: const EdgeInsets.only(left: 8.0, top: 5, bottom: 5),
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
new Text(
|
||||
|
||||
@@ -284,24 +284,7 @@ class _ProfileState extends State<Profile> {
|
||||
),
|
||||
backgroundColor: primaryColor,
|
||||
actions: <Widget>[
|
||||
IconButton(
|
||||
icon: Icon(Icons.edit),
|
||||
onPressed: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => ProfileEdit()),
|
||||
);
|
||||
},
|
||||
),
|
||||
IconButton(
|
||||
icon: Icon(Icons.settings),
|
||||
onPressed: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => ProfileSetting()),
|
||||
);
|
||||
},
|
||||
)
|
||||
|
||||
],
|
||||
),
|
||||
body: ListView(
|
||||
@@ -311,7 +294,15 @@ class _ProfileState extends State<Profile> {
|
||||
),
|
||||
shrinkWrap: true,
|
||||
children: <Widget>[
|
||||
namebox,
|
||||
Row(
|
||||
children: <Widget>[
|
||||
namebox,
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left:18.0),
|
||||
child: Icon(Icons.edit),
|
||||
)
|
||||
],
|
||||
),
|
||||
mainModel.isBuyer() ? Container() : getPrivilegeBox(context),
|
||||
phonenumberbox,
|
||||
mainModel.user == null
|
||||
@@ -320,20 +311,8 @@ class _ProfileState extends State<Profile> {
|
||||
? Container()
|
||||
: emailBox,
|
||||
languageBox,
|
||||
SizedBox(height: 50,),
|
||||
logoutbutton,
|
||||
Divider(color: secondaryColor),
|
||||
Switch(
|
||||
value: false,
|
||||
onChanged: (value) {
|
||||
setState(() {});
|
||||
},
|
||||
// activeTrackColor: Colors.lightGreenAccent,
|
||||
// activeColor: Colors.green,
|
||||
),
|
||||
versionbox,
|
||||
SizedBox(
|
||||
height: 20,
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@@ -87,7 +87,7 @@ class _StaffListState extends State<StaffList> {
|
||||
padding: new EdgeInsets.symmetric(
|
||||
horizontal: 32.0 - dotSize / 2),
|
||||
child: Icon(
|
||||
SimpleLineIcons.people,
|
||||
MaterialCommunityIcons.worker,
|
||||
color: primaryColor,
|
||||
size: 40,
|
||||
),
|
||||
|
||||
@@ -51,12 +51,14 @@ class _TermState extends State<Term> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
MainModel mainModel = Provider.of<MainModel>(context);
|
||||
print("controller terms => ${_controller.document}");
|
||||
|
||||
bool isOwnerAndAbove =
|
||||
mainModel.user != null && mainModel.user.isOwnerAndAbove();
|
||||
bool hasAdmin = mainModel.user != null && mainModel.user.hasAdmin();
|
||||
|
||||
bool aggreed = mainModel.user.agreeTerms;
|
||||
// bool aggreed = mainModel.user.agreeTerms;
|
||||
bool aggreed = true;
|
||||
|
||||
final agreeBtn = Padding(
|
||||
padding: EdgeInsets.symmetric(vertical: 10.0),
|
||||
@@ -86,9 +88,9 @@ class _TermState extends State<Term> {
|
||||
inAsyncCall: isLoading,
|
||||
child: Scaffold(
|
||||
appBar: AppBar(
|
||||
centerTitle: true,
|
||||
automaticallyImplyLeading: !widget.agreePage,
|
||||
title: LocalText(context, 'term.title',
|
||||
color: Colors.white, fontSize: 20),
|
||||
title: LocalText(context, 'term', color: Colors.white, fontSize: 20),
|
||||
backgroundColor: primaryColor,
|
||||
actions: <Widget>[
|
||||
isOwnerAndAbove || hasAdmin
|
||||
@@ -111,8 +113,7 @@ class _TermState extends State<Term> {
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Card(
|
||||
child: ZefyrTheme(
|
||||
data: ZefyrThemeData().copyWith(
|
||||
),
|
||||
data: ZefyrThemeData().copyWith(),
|
||||
child: ZefyrScaffold(
|
||||
child: ZefyrEditor(
|
||||
mode: ZefyrMode.view,
|
||||
@@ -134,13 +135,13 @@ class _TermState extends State<Term> {
|
||||
isLoading = true;
|
||||
});
|
||||
try {
|
||||
MainModel mainModel = Provider.of<MainModel>(context);
|
||||
await mainModel.agreeTerms();
|
||||
if (widget.agreePage) {
|
||||
Future.delayed(const Duration(milliseconds: 3000), () {
|
||||
Navigator.pop(context);
|
||||
});
|
||||
}
|
||||
// MainModel mainModel = Provider.of<MainModel>(context);
|
||||
// await mainModel.agreeTerms();
|
||||
// if (widget.agreePage) {
|
||||
// Future.delayed(const Duration(milliseconds: 3000), () {
|
||||
// Navigator.pop(context);
|
||||
// });
|
||||
// }
|
||||
} catch (e) {
|
||||
showMsgDialog(context, "Error", e.toString());
|
||||
setState(() {
|
||||
|
||||
@@ -92,8 +92,7 @@ class _TermEditState extends State<TermEdit> {
|
||||
),
|
||||
body: ZefyrScaffold(
|
||||
child: ZefyrTheme(
|
||||
data: ZefyrThemeData().copyWith(
|
||||
),
|
||||
data: ZefyrThemeData().copyWith(),
|
||||
child: ZefyrEditor(
|
||||
padding: EdgeInsets.all(16),
|
||||
controller: _controller,
|
||||
|
||||
@@ -401,6 +401,8 @@ Widget fcsInput(String label, IconData iconData,
|
||||
initialValue: value,
|
||||
controller: controller,
|
||||
cursorColor: primaryColor,
|
||||
maxLines: null,
|
||||
minLines: 1,
|
||||
textAlign: TextAlign.left,
|
||||
decoration: new InputDecoration(
|
||||
contentPadding: EdgeInsets.only(top: 8),
|
||||
@@ -418,6 +420,38 @@ Widget fcsInput(String label, IconData iconData,
|
||||
);
|
||||
}
|
||||
|
||||
Widget fcsInputReadOnly(String label, IconData iconData,
|
||||
{TextEditingController controller, String value}) {
|
||||
return Row(
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(right: 8.0),
|
||||
child: Icon(iconData),
|
||||
),
|
||||
Expanded(
|
||||
child: Container(
|
||||
child: Row(children: <Widget>[
|
||||
Expanded(
|
||||
child: TextFormField(
|
||||
initialValue: value,
|
||||
controller: controller,
|
||||
cursorColor: primaryColor,
|
||||
maxLines: null,
|
||||
minLines: 1,
|
||||
readOnly: true,
|
||||
textAlign: TextAlign.left,
|
||||
decoration: new InputDecoration(
|
||||
border: InputBorder.none,
|
||||
contentPadding: EdgeInsets.only(top: 8),
|
||||
labelText: label,
|
||||
),
|
||||
)),
|
||||
]),
|
||||
)),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget fcsDropDown(String label, IconData iconData,
|
||||
{TextEditingController controller}) {
|
||||
return Row(
|
||||
|
||||
Reference in New Issue
Block a user