add pickups

This commit is contained in:
Sai Naw Wun
2020-05-31 15:00:11 +06:30
parent d5847722d8
commit 3f6a66b887
57 changed files with 1368 additions and 1236 deletions

View File

@@ -1,5 +1,7 @@
import 'package:fcs/model/pickup_model.dart';
import 'package:fcs/model/shipment_rate_model.dart';
import 'package:fcs/pages/shipment_rates_calculate.dart';
import 'package:fcs/pages/shipment_rates_edit.dart';
import 'package:fcs/vo/pickup.dart';
import 'package:provider/provider.dart';
import 'package:fcs/widget/localization/app_translations.dart';
@@ -8,6 +10,7 @@ import 'package:flutter/material.dart';
import 'package:fcs/widget/progress.dart';
import '../theme/theme.dart';
import 'util.dart';
class ShipmentRates extends StatefulWidget {
final PickUp pickUp;
@@ -28,6 +31,14 @@ class _ShipmentRatesState extends State<ShipmentRates> {
PickUp _pickUp;
bool _isLoading = false;
List<String> texts = [
"Minimum shipping weight is 1lbs.",
"Oversized goods, Light weight/Large volume items, laptops, phones, tablets may incur extra charges based on specifications. Please contact us for pricing.",
"Goods with lithium battary needs extra packaging and declaration. Please inform us ahead of time so that we can process your package accordingly.",
"Loose Batteries, Drones, and Prescription medicines are not allowed on aircraft.",
"Payment: We accept money orders, any US bank transfers via Zelle, AYA, KBZ and CB. No COD except for pick-ups.",
"Payments made in Myanmar will incur 2% tranfer fee"
];
@override
void initState() {
@@ -51,6 +62,13 @@ class _ShipmentRatesState extends State<ShipmentRates> {
Widget build(BuildContext context) {
var shipmentRateModel = Provider.of<ShipmentRateModel>(context);
var textList = texts
.map(
(e) => TextSpan(
text: "\n * " + e + "\n",
style: TextStyle(fontWeight: FontWeight.normal, fontSize: 13)),
)
.toList();
final usaAddress = Container(
child: TextFormField(
maxLines: null,
@@ -66,240 +84,91 @@ class _ShipmentRatesState extends State<ShipmentRates> {
),
));
final mmAddress = Container(
height: 50.0,
child: Row(children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: Text('Yangon, Myanmar Office'),
),
Expanded(
child: TextFormField(
controller: _noOfPackageEditingController,
cursorColor: primaryColor,
textAlign: TextAlign.left,
decoration: InputDecoration(
contentPadding: EdgeInsets.all(10.0),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey[300], width: 2),
),
focusedBorder: OutlineInputBorder(
borderSide: const BorderSide(color: primaryColor, width: 2.0),
),
),
)),
]),
);
final contactNumber = Container(
height: 50.0,
child: Row(children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: Text('USA contact number'),
),
Expanded(
child: TextFormField(
controller: _weightEditingController,
cursorColor: primaryColor,
textAlign: TextAlign.left,
decoration: InputDecoration(
contentPadding: EdgeInsets.all(10.0),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey[300], width: 2),
),
focusedBorder: OutlineInputBorder(
borderSide: const BorderSide(color: primaryColor, width: 2.0),
),
),
)),
]),
);
final mmContactNumber = Container(
height: 50.0,
child: Row(children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: Text('Myanmar contact number'),
),
Expanded(
child: TextFormField(
controller: _weightEditingController,
cursorColor: primaryColor,
textAlign: TextAlign.left,
decoration: InputDecoration(
contentPadding: EdgeInsets.all(10.0),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey[300], width: 2),
),
focusedBorder: OutlineInputBorder(
borderSide: const BorderSide(color: primaryColor, width: 2.0),
),
),
)),
]),
);
final mailBox = Container(
height: 50.0,
child: Row(children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: Text('Email Address'),
),
Expanded(
child: TextFormField(
controller: _weightEditingController,
cursorColor: primaryColor,
textAlign: TextAlign.left,
decoration: InputDecoration(
contentPadding: EdgeInsets.all(10.0),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey[300], width: 2),
),
focusedBorder: OutlineInputBorder(
borderSide: const BorderSide(color: primaryColor, width: 2.0),
),
),
)),
]),
);
final fbLinkBox = Container(
height: 50.0,
child: Row(children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: Text('Facebook Link'),
),
Expanded(
child: TextFormField(
controller: _weightEditingController,
cursorColor: primaryColor,
textAlign: TextAlign.left,
decoration: InputDecoration(
contentPadding: EdgeInsets.all(10.0),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey[300], width: 2),
),
focusedBorder: OutlineInputBorder(
borderSide: const BorderSide(color: primaryColor, width: 2.0),
),
),
)),
]),
);
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: Text(AppTranslations.of(context).text("pickup.edit.title")),
title: Text(AppTranslations.of(context).text("rate.title")),
),
body: Card(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
body: Padding(
padding: const EdgeInsets.all(8.0),
child: ListView(
// crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
SizedBox(
height: 250,
// child: Image.asset(
// 'assets/logo.jpg',
// ),
),
Padding(
padding: const EdgeInsets.only(left: 20.0),
child: Text('Rates',
style:
TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold)),
),
Padding(
padding: const EdgeInsets.only(left: 20.0),
child: Text('Most affortable rate',
style: TextStyle(fontSize: 14.0)),
),
Container(
height: 100,
child: Padding(
padding: const EdgeInsets.all(20.0),
child: ListView.builder(
itemCount: shipmentRateModel.rates.length,
itemBuilder: (context, index) {
return Container(
child: Row(
children: <Widget>[
Text(
'${shipmentRateModel.rates[index].description} - '),
Text(
'\$${shipmentRateModel.rates[index].price} per lb',
style: TextStyle(color: Colors.blueAccent),
)
],
));
})),
height: 135,
child: ListView.builder(
itemCount: shipmentRateModel.rates.length,
itemBuilder: (context, index) {
return _row(
shipmentRateModel.rates[index].description,
"\$ " +shipmentRateModel.rates[index].price.toString(),
'per pound');
}),
),
widget.pickUp == null
? Align(
alignment: Alignment.bottomCenter,
child: Center(
child: Container(
width: 250,
child: FlatButton(
shape: new RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(10)),
child: Text('Calculate my packages'),
color: primaryColor,
textColor: Colors.white,
onPressed: () {
Navigator.pop(context);
},
),
)))
: Container(
child: Column(
children: <Widget>[
Align(
alignment: Alignment.bottomCenter,
child: Center(
child: Container(
width: 250,
child: FlatButton(
shape: new RoundedRectangleBorder(
borderRadius:
new BorderRadius.circular(10)),
child: Text('Pickuped'),
color: primaryColor,
textColor: Colors.white,
onPressed: () {
Navigator.pop(context);
},
),
))),
Align(
alignment: Alignment.bottomCenter,
child: Center(
child: Container(
width: 250,
child: FlatButton(
shape: new RoundedRectangleBorder(
borderRadius:
new BorderRadius.circular(10)),
child: Text('Cancel'),
color: primaryColor,
textColor: Colors.white,
onPressed: () {
Navigator.pop(context);
},
),
)))
],
))
_row("Free delivery within Yangon \nfor shipments over","10","pounds"),
_row("Delivery fees","\$ 5","below 10 pounds"),
Padding(
padding: const EdgeInsets.only(left: 18.0, right: 18),
child: RichText(
// overflow: TextOverflow.fade,
text: TextSpan(
style: TextStyle(color: primaryColor),
children: textList,
),
),
),
fcsButton(context, "Calculate", callack: () {
Navigator.of(context)
.push(MaterialPageRoute(builder: (_) => ShipmentRatesCal()));
}),
fcsButton(context, "Edit", callack: () {
Navigator.of(context)
.push(MaterialPageRoute(builder: (_) => ShipmentRatesEdit()));
}),
SizedBox(height:10)
],
),
),
),
);
}
_row(String desc, String price, String unit) {
return Container(
padding: EdgeInsets.only(left: 25, top: 5, bottom: 5),
child: Row(
children: <Widget>[
Text('$desc ', style: TextStyle(fontSize: 15)),
Spacer(),
Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(bottom: 3.0),
child: Text(
'$price',
style: TextStyle(color: primaryColor, fontSize: 14),
),
),
Text(
'$unit',
style: TextStyle(color: Colors.grey, fontSize: 14),
),
],
),
SizedBox(
width: 50,
),
],
));
}
}