update pages for carton
This commit is contained in:
@@ -9,7 +9,6 @@ import '../../domain/entities/user.dart';
|
||||
import '../main/util.dart';
|
||||
import '../rates/model/shipment_rate_model.dart';
|
||||
import '../widgets/continue_button.dart';
|
||||
import '../widgets/display_text.dart';
|
||||
import '../widgets/local_title.dart';
|
||||
import '../widgets/previous_button.dart';
|
||||
import 'cargo_type_addition.dart';
|
||||
@@ -29,14 +28,14 @@ class CargoWidget extends StatefulWidget {
|
||||
final OnContinue? onContinue;
|
||||
|
||||
const CargoWidget({
|
||||
Key? key,
|
||||
super.key,
|
||||
required this.cargoTypes,
|
||||
required this.surchargeItems,
|
||||
this.onPrevious,
|
||||
this.onContinue,
|
||||
required this.sender,
|
||||
required this.consignee,
|
||||
}) : super(key: key);
|
||||
});
|
||||
|
||||
@override
|
||||
State<CargoWidget> createState() => _CargoWidgetState();
|
||||
@@ -45,9 +44,9 @@ class CargoWidget extends StatefulWidget {
|
||||
class _CargoWidgetState extends State<CargoWidget> {
|
||||
List<CargoType> _cargoTypes = [];
|
||||
List<CargoType> _surchareItems = [];
|
||||
TextEditingController _totalCtl = TextEditingController();
|
||||
List<TextEditingController> _cargoTypeControllers = [];
|
||||
List<TextEditingController> _surchargeControllers = [];
|
||||
TextEditingController totalCtl = TextEditingController();
|
||||
List<TextEditingController> cargoTypeControllers = [];
|
||||
List<TextEditingController> surchargeControllers = [];
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -59,36 +58,37 @@ class _CargoWidgetState extends State<CargoWidget> {
|
||||
// for cargo types
|
||||
if (widget.cargoTypes.isNotEmpty) {
|
||||
_cargoTypes = List.from(widget.cargoTypes);
|
||||
_cargoTypes.forEach((e) {
|
||||
var editor = new TextEditingController();
|
||||
for (var e in _cargoTypes) {
|
||||
var editor = TextEditingController();
|
||||
editor.text = removeTrailingZeros(e.weight);
|
||||
editor.addListener(inputChangeListener);
|
||||
_cargoTypeControllers.add(editor);
|
||||
});
|
||||
cargoTypeControllers.add(editor);
|
||||
}
|
||||
_calculateTotalWeght();
|
||||
} else {
|
||||
var model = context.read<ShipmentRateModel>();
|
||||
var cargoes = model.rate.cargoTypes.map((e) => e.clone()).toList();
|
||||
|
||||
_cargoTypes = cargoes.where((e) => e.isDefault).toList();
|
||||
_cargoTypes.forEach((e) {
|
||||
var editor = new TextEditingController();
|
||||
// ignore: unused_local_variable
|
||||
for (var e in _cargoTypes) {
|
||||
var editor = TextEditingController();
|
||||
editor.text = '';
|
||||
editor.addListener(inputChangeListener);
|
||||
_cargoTypeControllers.add(editor);
|
||||
});
|
||||
cargoTypeControllers.add(editor);
|
||||
}
|
||||
}
|
||||
|
||||
//for surcharge items
|
||||
|
||||
if (widget.surchargeItems.isNotEmpty) {
|
||||
_surchareItems = List.from(widget.surchargeItems);
|
||||
_surchareItems.forEach((e) {
|
||||
var editor = new TextEditingController();
|
||||
for (var e in _surchareItems) {
|
||||
var editor = TextEditingController();
|
||||
editor.text = e.qty.toString();
|
||||
editor.addListener(inputChangeListener);
|
||||
_surchargeControllers.add(editor);
|
||||
});
|
||||
surchargeControllers.add(editor);
|
||||
}
|
||||
}
|
||||
|
||||
if (mounted) {
|
||||
@@ -98,16 +98,16 @@ class _CargoWidgetState extends State<CargoWidget> {
|
||||
|
||||
_calculateTotalWeght() {
|
||||
double total = _cargoTypes.fold(0, (sum, value) => sum + value.weight);
|
||||
_totalCtl.text = removeTrailingZeros(total);
|
||||
totalCtl.text = removeTrailingZeros(total);
|
||||
}
|
||||
|
||||
bool isFieldEmpty(int index) {
|
||||
return _cargoTypeControllers[index].text.isEmpty;
|
||||
return cargoTypeControllers[index].text.isEmpty;
|
||||
}
|
||||
|
||||
List<int> getEmptyFields() {
|
||||
List<int> emptyFields = [];
|
||||
for (int i = 0; i < _cargoTypeControllers.length; i++) {
|
||||
for (int i = 0; i < cargoTypeControllers.length; i++) {
|
||||
if (isFieldEmpty(i)) {
|
||||
emptyFields.add(i);
|
||||
}
|
||||
@@ -121,38 +121,36 @@ class _CargoWidgetState extends State<CargoWidget> {
|
||||
if (emptyFields.isEmpty) {
|
||||
_cargoTypes.asMap().entries.forEach((e) {
|
||||
_cargoTypes[e.key].weight =
|
||||
double.tryParse(_cargoTypeControllers[e.key].text) ?? 0;
|
||||
double.tryParse(cargoTypeControllers[e.key].text) ?? 0;
|
||||
});
|
||||
double total = _cargoTypes.fold(0, (sum, value) => sum + value.weight);
|
||||
setState(() {
|
||||
_totalCtl.text = removeTrailingZeros(total);
|
||||
totalCtl.text = removeTrailingZeros(total);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final senderBox = DisplayText(
|
||||
text: widget.sender.name,
|
||||
labelTextKey: "box.sender.title",
|
||||
iconData: MaterialCommunityIcons.account_arrow_right,
|
||||
subText: Text(widget.sender.fcsID!,
|
||||
style: TextStyle(fontSize: 13, color: labelColor)),
|
||||
);
|
||||
final senderBox = userDisplayBox(context,
|
||||
lableKey: "box.sender.title",
|
||||
icon: MaterialCommunityIcons.account_arrow_right,
|
||||
showLink: false,
|
||||
name: widget.sender.name ?? "",
|
||||
fcsID: widget.sender.fcsID ?? "");
|
||||
|
||||
final consigneeBox = DisplayText(
|
||||
text: widget.consignee.name,
|
||||
labelTextKey: "box.consignee.title",
|
||||
iconData: MaterialCommunityIcons.account_arrow_left,
|
||||
subText: Text(widget.consignee.fcsID!,
|
||||
style: TextStyle(fontSize: 13, color: labelColor)),
|
||||
);
|
||||
final consigneeBox = userDisplayBox(context,
|
||||
showLink: false,
|
||||
lableKey: "box.consignee.title",
|
||||
icon: MaterialCommunityIcons.account_arrow_left,
|
||||
name: widget.consignee.name,
|
||||
fcsID: widget.consignee.fcsID);
|
||||
|
||||
final userRow = Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(child: senderBox, flex: 2),
|
||||
Flexible(child: consigneeBox)
|
||||
Expanded(flex: 2, child: consigneeBox),
|
||||
Flexible(child: senderBox)
|
||||
],
|
||||
);
|
||||
|
||||
@@ -173,14 +171,14 @@ class _CargoWidgetState extends State<CargoWidget> {
|
||||
if (cargoType == null) return;
|
||||
_cargoTypes.add(cargoType);
|
||||
|
||||
_cargoTypeControllers.clear();
|
||||
cargoTypeControllers.clear();
|
||||
|
||||
_cargoTypes.forEach((e) {
|
||||
var editor = new TextEditingController();
|
||||
for (var e in _cargoTypes) {
|
||||
var editor = TextEditingController();
|
||||
editor.text = removeTrailingZeros(e.weight);
|
||||
editor.addListener(inputChangeListener);
|
||||
_cargoTypeControllers.add(editor);
|
||||
});
|
||||
cargoTypeControllers.add(editor);
|
||||
}
|
||||
|
||||
_calculateTotalWeght();
|
||||
if (mounted) {
|
||||
@@ -204,17 +202,17 @@ class _CargoWidgetState extends State<CargoWidget> {
|
||||
onTap: () {
|
||||
_cargoTypes.removeAt(key);
|
||||
|
||||
double totalWeight = double.tryParse(_totalCtl.text) ?? 0;
|
||||
double totalWeight = double.tryParse(totalCtl.text) ?? 0;
|
||||
double removeWeight =
|
||||
(double.tryParse(_cargoTypeControllers[key].text) ??
|
||||
(double.tryParse(cargoTypeControllers[key].text) ??
|
||||
0);
|
||||
|
||||
if (totalWeight >= removeWeight) {
|
||||
double result = totalWeight - removeWeight;
|
||||
_totalCtl.text = removeTrailingZeros(result);
|
||||
totalCtl.text = removeTrailingZeros(result);
|
||||
}
|
||||
|
||||
_cargoTypeControllers[key].clear();
|
||||
cargoTypeControllers[key].clear();
|
||||
|
||||
if (mounted) {
|
||||
setState(() {});
|
||||
@@ -225,7 +223,7 @@ class _CargoWidgetState extends State<CargoWidget> {
|
||||
Flexible(
|
||||
child: inputTextFieldWidget(context,
|
||||
lableText: c.name ?? "",
|
||||
controller: _cargoTypeControllers[key]),
|
||||
controller: cargoTypeControllers[key]),
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -243,7 +241,7 @@ class _CargoWidgetState extends State<CargoWidget> {
|
||||
radius: 25,
|
||||
onTap: () {
|
||||
setState(() {
|
||||
_totalCtl.clear();
|
||||
totalCtl.clear();
|
||||
});
|
||||
},
|
||||
child: Icon(MaterialIcons.clear, color: labelColor)),
|
||||
@@ -251,16 +249,16 @@ class _CargoWidgetState extends State<CargoWidget> {
|
||||
Flexible(
|
||||
child: inputTextFieldWidget(context,
|
||||
lableText: "Total",
|
||||
controller: _totalCtl,
|
||||
controller: totalCtl,
|
||||
readOnly: getEmptyFields().isEmpty, onChanged: (neValue) {
|
||||
List<int> emptyFields = getEmptyFields();
|
||||
if (emptyFields.length == 1) {
|
||||
double totalWeight = double.tryParse(neValue) ?? 0;
|
||||
|
||||
_cargoTypes.asMap().entries.forEach((e) {
|
||||
_cargoTypes[e.key].weight = double.tryParse(
|
||||
_cargoTypeControllers[e.key].text) ??
|
||||
0;
|
||||
_cargoTypes[e.key].weight =
|
||||
double.tryParse(cargoTypeControllers[e.key].text) ??
|
||||
0;
|
||||
});
|
||||
double result = _cargoTypes.fold(
|
||||
0, (sum, value) => sum + value.weight);
|
||||
@@ -268,7 +266,7 @@ class _CargoWidgetState extends State<CargoWidget> {
|
||||
if (totalWeight >= result) {
|
||||
double remaining = totalWeight - result;
|
||||
setState(() {
|
||||
_cargoTypeControllers[emptyFields.first].text =
|
||||
cargoTypeControllers[emptyFields.first].text =
|
||||
removeTrailingZeros(remaining);
|
||||
});
|
||||
}
|
||||
@@ -297,11 +295,11 @@ class _CargoWidgetState extends State<CargoWidget> {
|
||||
|
||||
_surchareItems.add(surchargeItem);
|
||||
|
||||
_surchargeControllers.clear();
|
||||
surchargeControllers.clear();
|
||||
_surchareItems.asMap().entries.forEach((e) {
|
||||
var editor = new TextEditingController();
|
||||
var editor = TextEditingController();
|
||||
editor.text = e.value.qty.toString();
|
||||
_surchargeControllers.add(editor);
|
||||
surchargeControllers.add(editor);
|
||||
});
|
||||
|
||||
if (mounted) {
|
||||
@@ -333,7 +331,7 @@ class _CargoWidgetState extends State<CargoWidget> {
|
||||
child: inputTextFieldWidget(
|
||||
context,
|
||||
lableText: c.name ?? "",
|
||||
controller: _surchargeControllers[key],
|
||||
controller: surchargeControllers[key],
|
||||
onChanged: (newValue) {
|
||||
setState(() {
|
||||
_surchareItems[key].qty = int.tryParse(newValue) ?? 0;
|
||||
@@ -418,7 +416,7 @@ class _CargoWidgetState extends State<CargoWidget> {
|
||||
keyboardType: TextInputType.number,
|
||||
onChanged: onChanged,
|
||||
readOnly: readOnly,
|
||||
decoration: new InputDecoration(
|
||||
decoration: InputDecoration(
|
||||
contentPadding: EdgeInsets.all(0),
|
||||
labelText: lableText,
|
||||
labelStyle: newLabelStyle(color: Colors.black54, fontSize: 17),
|
||||
|
||||
Reference in New Issue
Block a user