import 'package:fcs/domain/entities/fcs_shipment.dart'; import 'package:fcs/domain/entities/shipment.dart'; import 'package:fcs/helpers/theme.dart'; import 'package:fcs/pages/fcs_shipment/model/fcs_shipment_model.dart'; import 'package:fcs/pages/main/util.dart'; import 'package:fcs/pages/shipment/model/shipment_model.dart'; import 'package:fcs/pages/widgets/local_button.dart'; import 'package:fcs/pages/widgets/local_dropdown.dart'; import 'package:fcs/pages/widgets/local_text.dart'; import 'package:fcs/pages/widgets/local_title.dart'; import 'package:fcs/pages/widgets/progress.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_icons_null_safety/flutter_icons_null_safety.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; import 'widgets.dart'; class ShipmentPack extends StatefulWidget { final Shipment? shipment; ShipmentPack({this.shipment}); @override _ShipmentPackState createState() => _ShipmentPackState(); } class _ShipmentPackState extends State { var dateFormatter = new DateFormat('dd MMM yyyy'); var timeFormatter = new DateFormat('jm'); Shipment? _shipment; bool _isLoading = false; var now = new DateTime.now(); FcsShipment? _fcsShipment; List? _fcsShipments; @override void initState() { super.initState(); _shipment = widget.shipment; _loadFcsShipments(); } _loadFcsShipments() async { FcsShipmentModel fcsShipmentModel = Provider.of(context, listen: false); var fcsShipments = await fcsShipmentModel.getActiveFcsShipments(); var fcsShipment = fcsShipments.firstWhere((e) => e.id == _shipment?.fcsShipmentID); setState(() { _fcsShipments = fcsShipments; _fcsShipment = fcsShipment; }); } @override Widget build(BuildContext context) { final shipmentNumberBox = getShipmentNumberStatus(context, _shipment!); var fcsShipmentsBox = LocalDropdown( callback: (v) { setState(() { _fcsShipment = v; }); }, labelKey: "shipment.pack.fcs.shipment", iconData: MaterialCommunityIcons.worker, display: (u) => u.shipmentNumber, selectedValue: _fcsShipment, values: _fcsShipments, ); final packbtn = LocalButton( textKey: "shipment.pack.btn", callBack: _save, ); return LocalProgress( inAsyncCall: _isLoading, child: Scaffold( appBar: AppBar( centerTitle: true, leading: new IconButton( icon: new Icon( CupertinoIcons.back, color: primaryColor, ), onPressed: () => Navigator.of(context).pop(), ), shadowColor: Colors.transparent, backgroundColor: Colors.white, title: LocalText( context, "shipment.pack.menuitem", fontSize: 20, color: primaryColor, ), ), body: Padding( padding: const EdgeInsets.all(10.0), child: ListView( children: [ Center(child: shipmentNumberBox), SizedBox( height: 10, ), LocalTitle(textKey: "shipment.pack.fcs.shipment"), fcsShipmentsBox, SizedBox( height: 10, ), packbtn, ], ), ), ), ); } _save() async { _shipment!.fcsShipmentID = this._fcsShipment!.id; setState(() { _isLoading = true; }); try { ShipmentModel shipmentModel = Provider.of(context, listen: false); await shipmentModel.packShipment(_shipment!); Navigator.pop(context, true); } catch (e) { showMsgDialog(context, "Error", e.toString()); } finally { setState(() { _isLoading = false; }); } } }