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/custom.dart'; import 'package:fcs/vo/discount.dart'; import 'package:fcs/vo/pickup.dart'; import 'package:fcs/vo/rate.dart'; import 'package:fcs/widget/bottom_up_page_route.dart'; import 'package:provider/provider.dart'; import 'package:fcs/widget/localization/app_translations.dart'; 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; ShipmentRates({this.pickUp}); @override _ShipmentRatesState createState() => _ShipmentRatesState(); } class _ShipmentRatesState extends State { TextEditingController _addressEditingController = new TextEditingController(); TextEditingController _fromTimeEditingController = new TextEditingController(); TextEditingController _toTimeEditingController = new TextEditingController(); TextEditingController _noOfPackageEditingController = new TextEditingController(); TextEditingController _weightEditingController = new TextEditingController(); PickUp _pickUp; bool _isLoading = false; @override void initState() { super.initState(); if (widget.pickUp != null) { _pickUp = widget.pickUp; _addressEditingController.text = _pickUp.address; _fromTimeEditingController.text = _pickUp.fromTime; _toTimeEditingController.text = _pickUp.toTime; _noOfPackageEditingController.text = _pickUp.numberOfPackage.toString(); _weightEditingController.text = _pickUp.weight.toString(); } } @override void dispose() { super.dispose(); } @override Widget build(BuildContext context) { var shipmentRateModel = Provider.of(context); final usaAddress = Container( child: TextFormField( maxLines: null, controller: _addressEditingController, cursorColor: primaryColor, style: textStyle, decoration: new InputDecoration( labelText: 'USA Delivery Address', enabledBorder: UnderlineInputBorder( borderSide: BorderSide(color: primaryColor, width: 1.0)), focusedBorder: UnderlineInputBorder( borderSide: BorderSide(color: primaryColor, width: 1.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("rate.title")), ), body: Padding( padding: const EdgeInsets.all(8.0), child: ListView( // crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( padding: EdgeInsets.only(left: 25, top: 10), child: Text( "Cargo Types", style: TextStyle( color: primaryColor, fontWeight: FontWeight.bold, fontSize: 15), ), ), Container( height: 135, child: Column( children: getCargoWidget(shipmentRateModel.rates), ), ), Divider( color: Colors.grey, ), Container( padding: EdgeInsets.only(left: 25, top: 10), child: Text( "Custom Duties", style: TextStyle( color: primaryColor, fontWeight: FontWeight.bold, fontSize: 15), ), ), Container( height: 100, child: Column( children: getCustonWidget(shipmentRateModel.customs), ), ), Divider( color: Colors.grey, ), Container( padding: EdgeInsets.only(left: 25, top: 10), child: Text( "Discounts by weight", style: TextStyle( color: primaryColor, fontWeight: FontWeight.bold, fontSize: 15), ), ), Container( height: 100, child: Column( children: getDiscountWidget(shipmentRateModel.discountsByWeight), ), ), Divider( color: Colors.grey, ), _row("Free delivery within Yangon \nfor shipments over", "10", "pounds"), _row("Delivery fees", "\$ 5", "below 10 pounds"), _row("Volumetric Ratio", "166.36", "in3 per pound"), // fcsButton(context, "Terms & Conditions", callack: () { // Navigator.of(context) // .push(MaterialPageRoute(builder: (_) => Term())); // }), fcsButton(context, "Estimate shipping cost", callack: () { Navigator.of(context) .push(BottomUpPageRoute(ShipmentRatesCal())); }), fcsButton(context, "Edit", callack: () { Navigator.of(context) .push(BottomUpPageRoute(ShipmentRatesEdit())); }), SizedBox(height: 10) ], ), ), ), ); } List getCargoWidget(List rates) { return rates.map((cargo) { return Container( child: _row( cargo.description, "\$ " + cargo.price.toString(), 'per pound'), ); }).toList(); } List getCustonWidget(List customs) { return customs.map((c) { return Container( child: _row(c.productType, "\$ " + c.fee.toString(), ''), ); }).toList(); } List getDiscountWidget(List discounts) { return discounts.map((d) { return Container( child: _row( "${d.weight.toString()} lb", "\$ " + d.discountRate.toString(), ''), ); }).toList(); } _row(String desc, String price, String unit) { return Container( padding: EdgeInsets.only(left: 25, top: 5, bottom: 5), child: Row( children: [ Text('$desc ', style: TextStyle(fontSize: 15)), Spacer(), Column( crossAxisAlignment: CrossAxisAlignment.end, children: [ 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, ), ], )); } }