prepare carton image upload page and carton info page
This commit is contained in:
@@ -37,6 +37,7 @@ class Carton {
|
||||
String? cartonSizeID;
|
||||
String? cartonSizeName;
|
||||
double cartonWeight;
|
||||
String? billToValue;
|
||||
bool isSelected;
|
||||
|
||||
int rate;
|
||||
@@ -44,6 +45,7 @@ class Carton {
|
||||
String? packageType;
|
||||
String? pickUpID;
|
||||
List<String> photos = [];
|
||||
List<String> photoUrls;
|
||||
String? remark;
|
||||
DateTime? arrivedDate;
|
||||
String? cartonNumber;
|
||||
@@ -147,6 +149,7 @@ class Carton {
|
||||
this.packages = const [],
|
||||
this.cargoTypes = const [],
|
||||
this.cartonNumber,
|
||||
this.billToValue,
|
||||
this.fcsShipmentID,
|
||||
this.fcsShipmentNumber,
|
||||
this.packageIDs = const [],
|
||||
@@ -160,6 +163,7 @@ class Carton {
|
||||
this.mixCartons = const [],
|
||||
this.mixCartonIDs = const [],
|
||||
this.cartonWeight =0,
|
||||
this.photoUrls = const [],
|
||||
this.isSelected = false});
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
@@ -199,6 +203,8 @@ class Carton {
|
||||
List<Map<String, dynamic>>.from(map['mix_cartons'] ?? []);
|
||||
var _mixCartons =
|
||||
mixCartonsMaps.map((e) => Carton.fromMap(e, e["id"])).toList();
|
||||
List<String> _photoUrls =
|
||||
map['photo_urls'] == null ? [] : List.from(map['photo_urls']);
|
||||
|
||||
return Carton(
|
||||
id: docID,
|
||||
@@ -231,6 +237,7 @@ class Carton {
|
||||
senderName: map['sender_name'],
|
||||
mixCartonIDs: List<String>.from(map['mix_carton_ids'] ?? []),
|
||||
cartonWeight: (map['carton_weight'] ?? 0).toDouble(),
|
||||
photoUrls: _photoUrls,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -254,7 +261,8 @@ class Carton {
|
||||
'mix_cartons': _mixCartons,
|
||||
'sender_id': senderID,
|
||||
'sender_fcs_id': senderFCSID,
|
||||
'sender_name': senderName
|
||||
'sender_name': senderName,
|
||||
"photo_urls": photoUrls
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1,21 +1,11 @@
|
||||
import 'package:fcs/domain/entities/carton.dart';
|
||||
import 'package:fcs/domain/entities/package.dart';
|
||||
import 'package:fcs/domain/entities/user.dart';
|
||||
import 'package:fcs/helpers/theme.dart';
|
||||
import 'package:fcs/pages/main/util.dart';
|
||||
import 'package:fcs/pages/package/model/package_model.dart';
|
||||
import 'package:fcs/pages/user_search/user_serach.dart';
|
||||
import 'package:fcs/pages/widgets/barcode_scanner.dart';
|
||||
import 'package:fcs/pages/widgets/display_text.dart';
|
||||
import 'package:fcs/pages/widgets/fcs_id_icon.dart';
|
||||
import 'package:fcs/pages/widgets/input_text.dart';
|
||||
import 'package:fcs/pages/widgets/local_app_bar.dart';
|
||||
import 'package:fcs/pages/widgets/multi_img_controller.dart';
|
||||
import 'package:fcs/pages/widgets/multi_img_file.dart';
|
||||
import 'package:fcs/pages/widgets/progress.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
|
||||
typedef void FindCallBack();
|
||||
|
||||
class CartonImageUpload extends StatefulWidget {
|
||||
@@ -26,15 +16,15 @@ class CartonImageUpload extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _CartonImageUploaState extends State<CartonImageUpload> {
|
||||
bool _isLoading = false;
|
||||
Carton? _box;
|
||||
late bool _isNew;
|
||||
bool _isLoading = false;
|
||||
Carton? _box;
|
||||
MultiImgController multiImgController = MultiImgController();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
multiImgController.setImageUrls = _box!.photos;
|
||||
_box = widget.box;
|
||||
multiImgController.setImageUrls = _box?.photoUrls;
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -42,39 +32,53 @@ class _CartonImageUploaState extends State<CartonImageUpload> {
|
||||
return LocalProgress(
|
||||
inAsyncCall: _isLoading,
|
||||
child: Scaffold(
|
||||
appBar: LocalAppBar(
|
||||
labelKey: "box.imageupload.title",
|
||||
backgroundColor: Colors.white,
|
||||
labelColor: primaryColor,
|
||||
arrowColor: primaryColor,
|
||||
actions: []
|
||||
// isEdiable
|
||||
// ? <Widget>[
|
||||
// IconButton(
|
||||
// icon: Icon(Icons.edit, color: primaryColor),
|
||||
// onPressed: _gotoEditor,
|
||||
// ),
|
||||
// IconButton(
|
||||
// icon: Icon(Icons.delete, color: primaryColor),
|
||||
// onPressed: _delete,
|
||||
// ),
|
||||
// ]
|
||||
// : [],
|
||||
),
|
||||
body: ListView(
|
||||
children: [
|
||||
|
||||
//img
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
)
|
||||
);
|
||||
appBar: LocalAppBar(
|
||||
labelKey: "box.imageupload.title",
|
||||
backgroundColor: Colors.white,
|
||||
labelColor: primaryColor,
|
||||
arrowColor: primaryColor,
|
||||
actions: []
|
||||
// isEdiable
|
||||
// ? <Widget>[
|
||||
// IconButton(
|
||||
// icon: Icon(Icons.edit, color: primaryColor),
|
||||
// onPressed: _gotoEditor,
|
||||
// ),
|
||||
// IconButton(
|
||||
// icon: Icon(Icons.delete, color: primaryColor),
|
||||
// onPressed: _delete,
|
||||
// ),
|
||||
// ]
|
||||
// : [],
|
||||
),
|
||||
body: ListView(
|
||||
children: [
|
||||
Center(
|
||||
child: Text("${_box?.cartonNumber}",
|
||||
style: TextStyle(
|
||||
color: primaryColor,
|
||||
fontSize: 25,
|
||||
))),
|
||||
MultiImageFile(
|
||||
enabled: true,
|
||||
controller: multiImgController,
|
||||
title: "Receipt File",
|
||||
),
|
||||
Center(
|
||||
child: ElevatedButton(
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: Color(0xff272262),
|
||||
elevation: 3,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(5.0)),
|
||||
minimumSize: Size(300, 45), //////// HERE
|
||||
),
|
||||
onPressed: () {},
|
||||
child:
|
||||
const Text('Save', style: TextStyle(fontSize: 20)),
|
||||
),
|
||||
),
|
||||
],
|
||||
)));
|
||||
}
|
||||
// final img = MultiImageFile(
|
||||
// enabled: true,
|
||||
// controller:multiImgController,
|
||||
// title: "Receipt File",
|
||||
// );
|
||||
}
|
||||
|
||||
@@ -2,48 +2,38 @@ import 'package:fcs/domain/constants.dart';
|
||||
import 'package:fcs/domain/entities/cargo_type.dart';
|
||||
import 'package:fcs/domain/entities/carton.dart';
|
||||
import 'package:fcs/domain/entities/package.dart';
|
||||
import 'package:fcs/domain/entities/pickup.dart';
|
||||
import 'package:fcs/domain/vo/delivery_address.dart';
|
||||
import 'package:fcs/helpers/theme.dart';
|
||||
import 'package:fcs/pages/carton/carton_image_upload.dart';
|
||||
import 'package:fcs/pages/carton/carton_submit.dart';
|
||||
import 'package:fcs/pages/carton_size/model/carton_size_model.dart';
|
||||
import 'package:fcs/pages/main/util.dart';
|
||||
import 'package:fcs/pages/package/model/package_model.dart';
|
||||
import 'package:fcs/pages/rates/model/shipment_rate_model.dart';
|
||||
import 'package:fcs/pages/widgets/defalut_delivery_address.dart';
|
||||
import 'package:fcs/pages/widgets/display_text.dart';
|
||||
import 'package:fcs/pages/widgets/fcs_id_icon.dart';
|
||||
import 'package:fcs/pages/widgets/length_picker.dart';
|
||||
import 'package:fcs/pages/widgets/local_app_bar.dart';
|
||||
import 'package:fcs/pages/widgets/local_radio_buttons.dart';
|
||||
import 'package:fcs/pages/widgets/local_text.dart';
|
||||
import 'package:fcs/pages/widgets/local_title.dart';
|
||||
import 'package:fcs/pages/widgets/multi_img_controller.dart';
|
||||
import 'package:fcs/pages/widgets/multi_img_file.dart';
|
||||
import 'package:fcs/pages/widgets/progress.dart';
|
||||
import 'package:fcs/pages/widgets/status_tree.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_vector_icons/flutter_vector_icons.dart';
|
||||
import 'package:image_picker/image_picker.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import 'cargo_table.dart';
|
||||
import 'carton_editor.dart';
|
||||
import 'carton_package_table.dart';
|
||||
import 'carton_row.dart';
|
||||
import 'model/carton_model.dart';
|
||||
import 'widgets.dart';
|
||||
|
||||
final DateFormat dateFormat = DateFormat("d MMM yyyy");
|
||||
final NumberFormat numberFormatter = NumberFormat("#,###");
|
||||
|
||||
class CartonInfo extends StatefulWidget {
|
||||
final Package? package;
|
||||
final Carton box;
|
||||
|
||||
CartonInfo({required this.box,this.package});
|
||||
final Carton box;
|
||||
final String? billToValue;
|
||||
final CartonSubmit? cartonSubmit;
|
||||
|
||||
CartonInfo({required this.box,this.billToValue,this.package,this.cartonSubmit});
|
||||
|
||||
@override
|
||||
_CartonInfoState createState() => _CartonInfoState();
|
||||
@@ -52,10 +42,9 @@ class CartonInfo extends StatefulWidget {
|
||||
class _CartonInfoState extends State<CartonInfo> {
|
||||
bool _isLoading = false;
|
||||
Carton? _box;
|
||||
|
||||
CartonSubmit? _cartonSubmit;
|
||||
|
||||
|
||||
|
||||
DeliveryAddress? _deliveryAddress = new DeliveryAddress();
|
||||
MultiImgController multiImgController = MultiImgController();
|
||||
TextEditingController _widthController = new TextEditingController();
|
||||
TextEditingController _heightController = new TextEditingController();
|
||||
@@ -70,13 +59,17 @@ class _CartonInfoState extends State<CartonInfo> {
|
||||
bool isFromPackages = false;
|
||||
bool isSmallBag = false;
|
||||
bool isFromCartons = false;
|
||||
bool isEdiable = false;
|
||||
final List<CargoType> cargoTypes=[];
|
||||
final List<CargoType> surchareItems=[];
|
||||
bool isEdiable = false;
|
||||
final List<CargoType> cargoTypes = [];
|
||||
final List<CargoType> surchareItems = [];
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_box = widget.box;
|
||||
_box?.billToValue="Bill to sender";
|
||||
_cartonSubmit=widget.cartonSubmit;
|
||||
|
||||
//initPackage(widget.package!);
|
||||
//for shipment weight
|
||||
volumetricRatio = Provider.of<ShipmentRateModel>(context, listen: false)
|
||||
@@ -85,19 +78,18 @@ final List<CargoType> surchareItems=[];
|
||||
_lengthController.addListener(_calShipmentWeight);
|
||||
_widthController.addListener(_calShipmentWeight);
|
||||
_heightController.addListener(_calShipmentWeight);
|
||||
multiImgController.setImageUrls = _box!.photos;
|
||||
_updateBoxData();
|
||||
multiImgController.setImageUrls = _box!.photos;
|
||||
// _updateBoxData();
|
||||
_loadPackages();
|
||||
_loadMixCartons();
|
||||
}
|
||||
|
||||
|
||||
_updateBoxData() {
|
||||
_widthController.text = _box!.width.toString();
|
||||
_heightController.text = _box!.height.toString();
|
||||
_lengthController.text = _box!.length.toString();
|
||||
_cartonSizeController.text = _box!.cartonSizeName ?? "";
|
||||
_deliveryAddress = _box!.deliveryAddress;
|
||||
|
||||
isMixBox = _box!.cartonType == carton_mix_box;
|
||||
isFromShipments = _box!.cartonType == carton_from_shipments;
|
||||
isFromPackages = _box!.cartonType == carton_from_packages;
|
||||
@@ -126,8 +118,8 @@ final List<CargoType> surchareItems=[];
|
||||
_loadPackages() async {
|
||||
if (!isFromPackages && !isSmallBag) return;
|
||||
|
||||
if (_box!.cartonType == carton_from_packages && _box!.userID == null)
|
||||
return;
|
||||
// if (_box!.cartonType == carton_from_packages && _box!.userID == null)
|
||||
// return;
|
||||
PackageModel packageModel =
|
||||
Provider.of<PackageModel>(context, listen: false);
|
||||
List<Package> packages =
|
||||
@@ -179,161 +171,59 @@ final List<CargoType> surchareItems=[];
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var cartonModel = Provider.of<CartonModel>(context);
|
||||
double totalWeight = _box!.cargoTypes.fold(0, (sum, value) => sum + value.weight);
|
||||
double totalPieces = surchareItems.fold(0, (sum, value) => sum + value.qty);
|
||||
// final cartonTypeBox = LocalRadioButtons(
|
||||
// readOnly: true,
|
||||
// values: cartonModel.cartonTypesInfo,
|
||||
// selectedValue: (_box!.isShipmentCarton ?? false)
|
||||
// ? carton_from_shipments
|
||||
// : _box!.cartonType);
|
||||
double totalWeight =
|
||||
_box!.cargoTypes.fold(0, (sum, value) => sum + value.weight);
|
||||
double totalPieces = surchareItems.fold(0, (sum, value) => sum + value.qty);
|
||||
|
||||
final cartonTypeBox = DisplayText(
|
||||
text: _box!.cartonNumber,
|
||||
labelTextKey: "box.number",
|
||||
//iconData: Ionicons.ios_airplane,
|
||||
);
|
||||
final cartonQrBox = DisplayText(
|
||||
// text: _box!.,
|
||||
//labelTextKey: "box.number",
|
||||
iconData: AntDesign.qrcode,
|
||||
);
|
||||
final shipmentBox = DisplayText(
|
||||
text: _box!.fcsShipmentNumber,
|
||||
labelTextKey: "box.fcs_shipment_num",
|
||||
// iconData: Ionicons.ios_airplane,
|
||||
);
|
||||
final deliveryBox = DisplayText(
|
||||
text: "Delivery Carton",
|
||||
labelTextKey: "box.delivery_type",
|
||||
//icon: FcsIDIcon(),
|
||||
);
|
||||
|
||||
// final fcsIDBox = DisplayText(
|
||||
// text: _box!.fcsID == null ? "" : _box!.fcsID,
|
||||
// labelTextKey: "box.fcs.id",
|
||||
// //icon: FcsIDIcon(),
|
||||
// );
|
||||
|
||||
final customerNameBox = DisplayText(
|
||||
text: _box!.userName == null ? "" : _box!.userName,
|
||||
subText: Text(_box!.fcsID ?? "", style: textStyle),
|
||||
labelTextKey: "box.name",
|
||||
|
||||
//iconData: Icons.person,
|
||||
);
|
||||
|
||||
// final consigneefcsIDBox = DisplayText(
|
||||
// text: _box!.fcsID != null ? _box!.fcsID : "",
|
||||
// labelTextKey: "processing.fcs.id",
|
||||
// icon: FcsIDIcon(),
|
||||
// );
|
||||
|
||||
final consigneeNameBox = DisplayText(
|
||||
text: _box!.senderName != null ? _box!.senderName : "",
|
||||
subText: Text(_box!.senderFCSID ?? "", style: textStyle),
|
||||
|
||||
labelTextKey: "processing.consignee.name",
|
||||
//maxLines: 2,
|
||||
// iconData: Ionicons.document_text_outline,
|
||||
);
|
||||
|
||||
// final consigneeBox = Container(
|
||||
// child: Column(
|
||||
// children: [
|
||||
// consigneeNameBox,
|
||||
// IconButton(icon:Icon(Ionicons.document_text_outline),
|
||||
// onPressed:() {},),
|
||||
// Text("Bill to",style:TextStyle(color:Color.fromARGB(255, 57, 80, 233)))
|
||||
|
||||
// ],
|
||||
// ),
|
||||
// );
|
||||
|
||||
// final shipperIDBox = Row(
|
||||
// children: <Widget>[
|
||||
// Expanded(
|
||||
// child: DisplayText(
|
||||
// text: _box!.senderFCSID,
|
||||
// labelTextKey: "processing.fcs.id",
|
||||
// icon: FcsIDIcon(),
|
||||
// )),
|
||||
// ],
|
||||
// );
|
||||
|
||||
// final shipperNamebox = DisplayText(
|
||||
// text: _box!.senderName,
|
||||
// labelTextKey: "processing.shipper.name",
|
||||
// maxLines: 2,
|
||||
// iconData: Icons.person,
|
||||
// );
|
||||
|
||||
// final shipperBox = Container(
|
||||
// child: Column(
|
||||
// children: [
|
||||
// shipperIDBox,
|
||||
// shipperNamebox,
|
||||
// ],
|
||||
// ),
|
||||
// );
|
||||
|
||||
final lengthBox = LengthPicker(
|
||||
controller: _lengthController,
|
||||
lableKey: "box.length",
|
||||
isReadOnly: true,
|
||||
);
|
||||
final widthBox = LengthPicker(
|
||||
controller: _widthController,
|
||||
lableKey: "box.width",
|
||||
isReadOnly: true,
|
||||
);
|
||||
final heightBox = LengthPicker(
|
||||
controller: _heightController,
|
||||
lableKey: "box.height",
|
||||
isReadOnly: true,
|
||||
);
|
||||
|
||||
final dimBox = Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(right: 8.0),
|
||||
child: Icon(FontAwesome.arrow_circle_right, color: primaryColor),
|
||||
),
|
||||
SizedBox(child: lengthBox, width: 80),
|
||||
SizedBox(child: widthBox, width: 80),
|
||||
SizedBox(child: heightBox, width: 80),
|
||||
],
|
||||
);
|
||||
final packageBox = DisplayText(
|
||||
//text: "203FVH",
|
||||
labelTextKey: "box.package",
|
||||
|
||||
);
|
||||
final cargosBox = Padding(
|
||||
final cargosBox = Padding(
|
||||
padding: const EdgeInsets.only(top: 10),
|
||||
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
||||
// Padding(
|
||||
// padding: const EdgeInsets.only(left: 5, bottom: 5, right: 20),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
LocalText(context, 'box.cargo.type',
|
||||
color: Colors.black54,
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.normal),
|
||||
Padding(padding: EdgeInsets.only(right: 100),
|
||||
child:
|
||||
Text("${removeTrailingZeros(totalWeight)} lb",
|
||||
style: TextStyle(color: Colors.black54, fontSize: 15)))
|
||||
],
|
||||
),
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
LocalText(context, 'box.cargo.type',
|
||||
color: Colors.black54,
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.normal),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(right: 100),
|
||||
child: Text("${removeTrailingZeros(totalWeight)} lb",
|
||||
style: TextStyle(color: Colors.black54, fontSize: 15)))
|
||||
],
|
||||
),
|
||||
//),
|
||||
Container(
|
||||
// decoration: BoxDecoration(
|
||||
// border: Border.all(color: primaryColor),
|
||||
// borderRadius: BorderRadius.circular(5),
|
||||
// ),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(right: 100),
|
||||
child: Column(
|
||||
@@ -359,7 +249,6 @@ double totalPieces = surchareItems.fold(0, (sum, value) => sum + value.qty);
|
||||
);
|
||||
}).toList()),
|
||||
const SizedBox(height: 10),
|
||||
|
||||
],
|
||||
),
|
||||
),
|
||||
@@ -369,27 +258,21 @@ double totalPieces = surchareItems.fold(0, (sum, value) => sum + value.qty);
|
||||
final surchargeItemBox = Padding(
|
||||
padding: const EdgeInsets.only(top: 10),
|
||||
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
||||
// Padding(
|
||||
// padding: const EdgeInsets.only(left: 5, bottom: 5, right: 20),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
LocalText(context, 'box.surcharge.item',
|
||||
color: Colors.black54,
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.normal),
|
||||
Padding(padding: EdgeInsets.only(right: 100),
|
||||
child:
|
||||
Text("${removeTrailingZeros(totalPieces)} pcs",
|
||||
style: TextStyle(color: Colors.black54, fontSize: 15)))
|
||||
],
|
||||
),
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
LocalText(context, 'box.surcharge.item',
|
||||
color: Colors.black54,
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.normal),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(right: 100),
|
||||
child: Text("${removeTrailingZeros(totalPieces)} pcs",
|
||||
style: TextStyle(color: Colors.black54, fontSize: 15)))
|
||||
],
|
||||
),
|
||||
//),
|
||||
Container(
|
||||
// decoration: BoxDecoration(
|
||||
// border: Border.all(color: primaryColor),
|
||||
// borderRadius: BorderRadius.circular(5),
|
||||
// ),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(right: 100),
|
||||
child: Column(
|
||||
@@ -407,7 +290,8 @@ double totalPieces = surchareItems.fold(0, (sum, value) => sum + value.qty);
|
||||
style:
|
||||
TextStyle(color: Colors.black, fontSize: 15),
|
||||
),
|
||||
Text("${removeTrailingZeros((e.qty).toDouble())} pc",
|
||||
Text(
|
||||
"${removeTrailingZeros((e.qty).toDouble())} pc",
|
||||
style: TextStyle(
|
||||
color: Colors.black, fontSize: 15))
|
||||
],
|
||||
@@ -440,289 +324,228 @@ double totalPieces = surchareItems.fold(0, (sum, value) => sum + value.qty);
|
||||
),
|
||||
]),
|
||||
);
|
||||
|
||||
final img = MultiImageFile(
|
||||
|
||||
final img = MultiImageFile(
|
||||
enabled: false,
|
||||
controller: multiImgController,
|
||||
title: "Receipt File",
|
||||
);
|
||||
final billWidget
|
||||
= Expanded(child:Padding(
|
||||
padding: EdgeInsets.only(left: 0,top: 15),
|
||||
child:
|
||||
final displayMixBox=
|
||||
Container(child:Row(children: [
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Icon(Ionicons.document_text_outline, color: primaryColor, size: 20),
|
||||
Text("Bill to", style: TextStyle(color: primaryColor, fontSize: 15))
|
||||
],
|
||||
)));
|
||||
|
||||
final cargoBox = DisplayText(
|
||||
//text: "203FVH",
|
||||
labelTextKey: "box.cargo.type",
|
||||
|
||||
);
|
||||
|
||||
|
||||
final cartonSizeBox = DisplayText(
|
||||
text: _cartonSizeController.text,
|
||||
labelTextKey: "box.carton_size",
|
||||
iconData: AntDesign.CodeSandbox,
|
||||
);
|
||||
// final cargoTableBox = CargoTable(
|
||||
// cargoTypes: _box!.cargoTypes,
|
||||
// );
|
||||
// final mixCartonNumberBox = DisplayText(
|
||||
// text: _box!.mixCartonNumber,
|
||||
// labelTextKey: "box.mix.carton",
|
||||
// iconData: MaterialCommunityIcons.package,
|
||||
// );
|
||||
|
||||
final mixTypeBox = Container(
|
||||
padding: EdgeInsets.only(top: 20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
padding: EdgeInsets.only(left: 5),
|
||||
child: LocalText(
|
||||
context,
|
||||
"box.mix_type",
|
||||
color: primaryColor,
|
||||
fontSize: 15,
|
||||
fontWeight: FontWeight.bold,
|
||||
)),
|
||||
Row(
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Icon(
|
||||
Icons.check,
|
||||
color: primaryColor,
|
||||
),
|
||||
),
|
||||
Text(selectMixBoxType ?? "")
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Row(
|
||||
//crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
customerNameBox,
|
||||
],
|
||||
),
|
||||
),
|
||||
_box?.billToValue == billToSender
|
||||
? Expanded(
|
||||
child: Padding(
|
||||
padding: EdgeInsets.only(left: 0, top: 15),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Icon(Ionicons.document_text_outline,
|
||||
color: primaryColor, size: 20),
|
||||
Text("Bill to",
|
||||
style: TextStyle(color: primaryColor, fontSize: 15))
|
||||
],
|
||||
)))
|
||||
: const SizedBox()
|
||||
],
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(left: 0),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
consigneeNameBox,
|
||||
],
|
||||
),
|
||||
),
|
||||
_cartonSubmit?.billToValue == billToSender
|
||||
? Expanded(
|
||||
child: Padding(
|
||||
padding: EdgeInsets.only(left: 0, top: 15),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Icon(Ionicons.document_text_outline,
|
||||
color: primaryColor, size: 20),
|
||||
Text("Bill to",
|
||||
style: TextStyle(color: primaryColor, fontSize: 15))
|
||||
],
|
||||
)))
|
||||
: const SizedBox()
|
||||
],
|
||||
),
|
||||
))
|
||||
],
|
||||
),
|
||||
packageBox,
|
||||
Row(
|
||||
children: getPackageList(_box!.packages),
|
||||
)
|
||||
],));
|
||||
final billWidget = Expanded(
|
||||
child: Padding(
|
||||
padding: EdgeInsets.only(left: 0, top: 15),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Icon(Ionicons.document_text_outline,
|
||||
color: primaryColor, size: 20),
|
||||
Text("Bill to",
|
||||
style: TextStyle(color: primaryColor, fontSize: 15))
|
||||
],
|
||||
)));
|
||||
|
||||
return LocalProgress(
|
||||
inAsyncCall: _isLoading,
|
||||
child: Scaffold(
|
||||
appBar: LocalAppBar(
|
||||
labelKey: "box.info.title",
|
||||
backgroundColor: Colors.white,
|
||||
labelColor: primaryColor,
|
||||
arrowColor: primaryColor,
|
||||
actions: isEdiable
|
||||
? <Widget>[
|
||||
IconButton(
|
||||
icon: Icon(Icons.edit, color: primaryColor),
|
||||
onPressed: _gotoEditor,
|
||||
),
|
||||
IconButton(
|
||||
icon: Icon(Icons.delete, color: primaryColor),
|
||||
onPressed: _delete,
|
||||
),
|
||||
]
|
||||
: [],
|
||||
),
|
||||
body:
|
||||
Container(
|
||||
padding: const EdgeInsets.all(10.0),
|
||||
child:
|
||||
Column(children: [
|
||||
|
||||
Row(children:[
|
||||
Flexible(child:
|
||||
cartonTypeBox),
|
||||
Flexible(child:
|
||||
cartonQrBox,
|
||||
),
|
||||
]),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Flexible(child: shipmentBox,),
|
||||
Flexible(child: deliveryBox,),
|
||||
|
||||
|
||||
],),
|
||||
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Row(
|
||||
//crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
customerNameBox,
|
||||
],
|
||||
inAsyncCall: _isLoading,
|
||||
child: Scaffold(
|
||||
appBar: LocalAppBar(
|
||||
labelKey: "box.info.title",
|
||||
backgroundColor: Colors.white,
|
||||
labelColor: primaryColor,
|
||||
arrowColor: primaryColor,
|
||||
actions: isEdiable
|
||||
? <Widget>[
|
||||
IconButton(
|
||||
icon: Icon(Icons.edit, color: primaryColor),
|
||||
onPressed: _gotoEditor,
|
||||
),
|
||||
),
|
||||
CargoType().isCutomDuty == false
|
||||
? billWidget
|
||||
: const SizedBox()
|
||||
],
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(left: 0),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
consigneeNameBox,
|
||||
],
|
||||
IconButton(
|
||||
icon: Icon(Icons.delete, color: primaryColor),
|
||||
onPressed: _delete,
|
||||
),
|
||||
),
|
||||
CargoType().isCutomDuty == true
|
||||
? billWidget
|
||||
: const SizedBox()
|
||||
],
|
||||
),
|
||||
))
|
||||
|
||||
],),
|
||||
|
||||
packageBox,
|
||||
Column(children:
|
||||
getPackageList(_box!.packages),
|
||||
),
|
||||
cargosBox,
|
||||
surchargeItemBox,
|
||||
|
||||
|
||||
Flexible(child:
|
||||
Padding(padding: EdgeInsets.only(left: 200.0,right: 8.0),
|
||||
|
||||
child: ElevatedButton(
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: Color(0xff272262),
|
||||
elevation: 3,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(5.0)),
|
||||
minimumSize: Size(10, 35), //////// HERE
|
||||
]
|
||||
: [],
|
||||
),
|
||||
onPressed: (){
|
||||
Navigator.push(
|
||||
context,
|
||||
CupertinoPageRoute(builder: (context) => CartonImageUpload()),
|
||||
);
|
||||
body: Container(
|
||||
padding: const EdgeInsets.all(10.0),
|
||||
child: ListView(children: <Widget>[
|
||||
Row(children: [
|
||||
Flexible(child: cartonTypeBox),
|
||||
Flexible(
|
||||
child: cartonQrBox,
|
||||
),
|
||||
]),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Flexible(
|
||||
child: shipmentBox,
|
||||
),
|
||||
Flexible(
|
||||
child: deliveryBox,
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
|
||||
// Row(
|
||||
// mainAxisAlignment: MainAxisAlignment.start,
|
||||
// children: [
|
||||
// Expanded(
|
||||
// child: Row(
|
||||
// //crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// children: [
|
||||
// Expanded(
|
||||
// child: Column(
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// children: [
|
||||
// customerNameBox,
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// _box?.billToValue == billToSender
|
||||
// ? billWidget
|
||||
// : const SizedBox()
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// Expanded(
|
||||
// child: Padding(
|
||||
// padding: const EdgeInsets.only(left: 0),
|
||||
// child: Row(
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// children: [
|
||||
// Expanded(
|
||||
// child: Column(
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// children: [
|
||||
// consigneeNameBox,
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// _cartonSubmit?.billToValue == billToSender
|
||||
// ? billWidget
|
||||
// : const SizedBox()
|
||||
// ],
|
||||
// ),
|
||||
// ))
|
||||
// ],
|
||||
// ),
|
||||
// packageBox,
|
||||
// Row(
|
||||
// children: getPackageList(_box!.packages),
|
||||
// ),
|
||||
// ]):Container(),
|
||||
|
||||
cargosBox,
|
||||
surchargeItemBox,
|
||||
Padding(
|
||||
padding: EdgeInsets.only(left: 200.0, right: 8.0),
|
||||
child: ElevatedButton(
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: Color(0xff272262),
|
||||
elevation: 3,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(5.0)),
|
||||
minimumSize: Size(10, 35), //////// HERE
|
||||
),
|
||||
onPressed: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
CupertinoPageRoute(
|
||||
builder: (context) =>
|
||||
CartonImageUpload(box: _box)),
|
||||
);
|
||||
},
|
||||
child: const Text('Upload Images'),
|
||||
),)),
|
||||
img,
|
||||
Center(child: ElevatedButton(
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor:Color(0xffff0606),
|
||||
elevation: 3,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(5.0)),
|
||||
minimumSize: Size(300, 45), //////// HERE
|
||||
),
|
||||
onPressed: (){},
|
||||
child: const Text('Delete Carton',style:TextStyle(fontSize: 20)),
|
||||
),),
|
||||
|
||||
//_package!.photoUrls.length == 0 || _package!.photoUrls.isEmpty ? Container() : img,
|
||||
|
||||
|
||||
|
||||
//LocalTitle(textKey: "box.shipment_info"),
|
||||
// shipmentBox,
|
||||
// isSmallBag ? mixCartonNumberBox : Container(),
|
||||
// isMixBox
|
||||
// ? Container()
|
||||
// : isFromPackages
|
||||
// ? fcsIDBox
|
||||
// : Container(),
|
||||
// isMixBox
|
||||
// ? Container()
|
||||
// : isFromPackages
|
||||
// ? customerNameBox
|
||||
// : Container(),
|
||||
// isFromCartons
|
||||
// ? Row(
|
||||
// children: [
|
||||
// Flexible(child: consigneeBox),
|
||||
// Flexible(child: shipperBox)
|
||||
// ],
|
||||
// )
|
||||
// : Container(),
|
||||
// Padding(padding: EdgeInsets.only(left: 10),
|
||||
// child: Row(children:[
|
||||
|
||||
// ListView.builder(
|
||||
// itemCount: pickups.length,
|
||||
// itemBuilder: (context, index) {
|
||||
// return ListTile(
|
||||
// title: Text(pickups[index]),
|
||||
// );
|
||||
// },)
|
||||
|
||||
// ])),
|
||||
// // isMixBox ? mixTypeBox : Container(),
|
||||
// isMixBox ? LocalTitle(textKey: "box.mix_caton_title") : Container(),
|
||||
// isMixBox
|
||||
// ? Column(children: _getCartons(context, _box!.mixCartons))
|
||||
// : Container(),
|
||||
// isFromPackages || isSmallBag
|
||||
// ? CartonPackageTable(
|
||||
// packages: _box!.packages,
|
||||
// )
|
||||
// : Container(),
|
||||
// isMixBox ? Container() : LocalTitle(textKey: "box.cargo.type"),
|
||||
// isMixBox ? Container() : cargoTableBox,
|
||||
// ...(isFromPackages || isFromCartons
|
||||
// ? [
|
||||
// LocalTitle(textKey: "box.dimension"),
|
||||
// cartonSizeBox,
|
||||
// dimBox,
|
||||
// ]
|
||||
// : []),
|
||||
// isMixBox
|
||||
// ? Container()
|
||||
// : LocalTitle(textKey: "box.delivery_address"),
|
||||
// isMixBox
|
||||
// ? Container()
|
||||
// : DefaultDeliveryAddress(
|
||||
// deliveryAddress: _deliveryAddress,
|
||||
// labelKey: "box.delivery_address",
|
||||
// ),
|
||||
// SizedBox(
|
||||
// height: 20,
|
||||
// )
|
||||
])
|
||||
)
|
||||
)
|
||||
|
||||
// ])
|
||||
// )
|
||||
// )
|
||||
);
|
||||
}
|
||||
|
||||
List<Widget> _getCartons(BuildContext context, List<Carton> cartons) {
|
||||
return cartons.map((c) {
|
||||
return CartonRow(box: c);
|
||||
}).toList();
|
||||
}
|
||||
List<Widget> _getPackages(BuildContext context, List<Package> packages) {
|
||||
return packages.map((p) {
|
||||
return Text(p.packageType!);
|
||||
}).toList();
|
||||
child: const Text('Upload Images'),
|
||||
),
|
||||
),
|
||||
img,
|
||||
Center(
|
||||
child: ElevatedButton(
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: Color(0xffff0606),
|
||||
elevation: 3,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(5.0)),
|
||||
minimumSize: Size(300, 45), //////// HERE
|
||||
),
|
||||
onPressed: () {},
|
||||
child: const Text('Delete Carton',
|
||||
style: TextStyle(fontSize: 20)),
|
||||
),
|
||||
),
|
||||
]))));
|
||||
}
|
||||
|
||||
_gotoEditor() async {
|
||||
@@ -733,7 +556,7 @@ double totalPieces = surchareItems.fold(0, (sum, value) => sum + value.qty);
|
||||
);
|
||||
if (updated ?? false) {
|
||||
var cartonModel = Provider.of<CartonModel>(context, listen: false);
|
||||
var c = await cartonModel.getCarton(widget.box!.id ?? "");
|
||||
var c = await cartonModel.getCarton(widget.box.id ?? "");
|
||||
setState(() {
|
||||
_box = c;
|
||||
_loadPackages();
|
||||
@@ -755,7 +578,7 @@ double totalPieces = surchareItems.fold(0, (sum, value) => sum + value.qty);
|
||||
});
|
||||
try {
|
||||
var cartonModel = Provider.of<CartonModel>(context, listen: false);
|
||||
await cartonModel.deleteCarton(widget.box!);
|
||||
await cartonModel.deleteCarton(widget.box);
|
||||
Navigator.pop(context, true);
|
||||
} catch (e) {
|
||||
showMsgDialog(context, "Error", e.toString());
|
||||
@@ -766,29 +589,27 @@ double totalPieces = surchareItems.fold(0, (sum, value) => sum + value.qty);
|
||||
}
|
||||
}
|
||||
|
||||
List<Widget> getPackageList(List<Package> _p) {
|
||||
return _p.map((p) {
|
||||
return Container(
|
||||
List<Widget> getPackageList(List<Package> _p) {
|
||||
return _p.map((p) {
|
||||
return Container(
|
||||
padding: EdgeInsets.only(top: 0),
|
||||
child: Container(
|
||||
//padding:
|
||||
//EdgeInsets.only(top: 0.0),
|
||||
child: Row(children:<Widget> [
|
||||
new Text(p.packageType ?? '')
|
||||
]),
|
||||
));}).toList();
|
||||
}
|
||||
List<Widget> getCargoList(List<CargoType> _c) {
|
||||
return _c.map((c) {
|
||||
return Container(
|
||||
//EdgeInsets.only(top: 0.0),
|
||||
child: Row(children: <Widget>[new Text(p.trackingID ?? '')]),
|
||||
));
|
||||
}).toList();
|
||||
}
|
||||
|
||||
List<Widget> getCargoList(List<CargoType> _c) {
|
||||
return _c.map((c) {
|
||||
return Container(
|
||||
padding: EdgeInsets.only(top: 0),
|
||||
child: Container(
|
||||
//padding:
|
||||
//EdgeInsets.only(top: 0.0),
|
||||
child: Row(children:<Widget> [
|
||||
new Text(c.name ?? '')
|
||||
]),
|
||||
));}).toList();
|
||||
}
|
||||
|
||||
//EdgeInsets.only(top: 0.0),
|
||||
child: Row(children: <Widget>[new Text(c.name ?? '')]),
|
||||
));
|
||||
}).toList();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user