// ignore_for_file: deprecated_member_use import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import '../../../domain/constants.dart'; import '../../../domain/entities/carton.dart'; import '../../../domain/entities/carton_size.dart'; import '../../../domain/entities/fcs_shipment.dart'; import '../../../domain/vo/local_step.dart'; import '../../../helpers/theme.dart'; import '../../domain/entities/user.dart'; import '../main/util.dart'; import '../widgets/local_text.dart'; import '../widgets/progress.dart'; import '../widgets/step_widget.dart'; import 'carton_size_widget.dart'; import 'mix_carton/mix_carton_submit.dart'; class CartonEditorForPackage extends StatefulWidget { final User sender; final User consignee; const CartonEditorForPackage({Key? key, required this.sender, required this.consignee}) : super(key: key); @override State createState() => _CartonEditorForPackageState(); } class _CartonEditorForPackageState extends State { var dateFormatter = DateFormat('dd MMM yyyy'); final NumberFormat numberFormatter = NumberFormat("#,###"); List steps = [ LocalStep(lable: 'Size', stepType: StepType.SIZE), LocalStep(lable: 'Packages', stepType: StepType.PACKAGES), LocalStep(lable: 'Cargos', stepType: StepType.CARGOS), LocalStep(lable: 'Submit', stepType: StepType.SUBMIT) ]; List _cartions = []; int currentStep = 0; double _length = 0; double _width = 0; double _height = 0; FcsShipment? _shipment; String _cartonSizeType = standardCarton; CartonSize? _standardSize; bool _isLoading = false; @override Widget build(BuildContext context) { return WillPopScope( onWillPop: () { if (currentStep == 0) { Navigator.of(context).pop(); } if (currentStep > 0) { setState(() { currentStep -= 1; }); } return Future.value(false); }, child: LocalProgress( inAsyncCall: _isLoading, child: Scaffold( appBar: AppBar( elevation: 0, centerTitle: true, leading: IconButton( icon: const Icon(CupertinoIcons.back, color: primaryColor, size: 25), onPressed: () { if (currentStep == 0) { Navigator.of(context).pop(); } if (currentStep > 0) { setState(() { currentStep -= 1; }); } }, ), backgroundColor: Colors.white, title: LocalText(context, 'boxes.new', color: primaryColor, fontSize: 20), ), body: Column( children: [ StepperWidget( labels: steps.map((e) => e.lable).toList(), currentStep: currentStep, eachStepWidth: MediaQuery.of(context).size.width / 4, onChange: (index) { if (index > currentStep) { return; } setState(() { currentStep = index; }); }, ), getContent(currentStep) ], ))), ); } Widget getContent(int index) { var step = steps[index]; if (step.stepType == StepType.SIZE) { return Expanded( child: CartonSizeWidget( sender: widget.sender, consignee: widget.consignee, shipment: _shipment, cartonSizeType: _cartonSizeType, standardSize: _standardSize, length: _length, width: _width, height: _height, onPrevious: () { Navigator.pop(context); }, onContinue: (shipment, cartonSizeType, {standardSize, length, width, height}) { setState(() { _shipment = shipment; _cartonSizeType = cartonSizeType; _standardSize = standardSize; _length = length ?? 0; _width = width ?? 0; _height = height ?? 0; currentStep += 1; }); }, )); } else if (step.stepType == StepType.PACKAGES) { return Expanded( child: Text("PACKAGES"), // child: CartonSelectionWidget( // shipment: _shipment!, // cartons: _cartions, // onContinue: (cartons) { // setState(() { // _cartions = List.from(cartons); // currentStep += 1; // }); // }, // onPrevious: (cartons) { // setState(() { // _cartions = List.from(cartons); // currentStep -= 1; // }); // }, // ), ); } else if (step.stepType == StepType.CARGOS) { return Expanded( child: Text("cargos"), // child: CartonSelectionWidget( // shipment: _shipment!, // cartons: _cartions, // onContinue: (cartons) { // setState(() { // _cartions = List.from(cartons); // currentStep += 1; // }); // }, // onPrevious: (cartons) { // setState(() { // _cartions = List.from(cartons); // currentStep -= 1; // }); // }, // ), ); } else { return Expanded( child: MixCartonSubmit( cartonSizeType: _cartonSizeType, standardSize: _standardSize, length: _length, width: _width, height: _height, shipment: _shipment!, cartons: _cartions, onCreate: () { _create(); }, onPrevious: () { setState(() { currentStep -= 1; }); }, ), ); } } _create() async { setState(() { _isLoading = true; }); try { Navigator.pop(context, true); } catch (e) { showMsgDialog(context, "Error", e.toString()); } finally { setState(() { _isLoading = false; }); } } }