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'; 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; List 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() { 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); 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, 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( 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'); }), ), _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: [ 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, ), ], )); } }