multipleProductsBottomsheet method
dynamic
multipleProductsBottomsheet()
Implementation
multipleProductsBottomsheet(
BuildContext context,
String title,
String? serialNum,
String? serialStartRange,
String? serialEndRange,
String requestToPartnerId) {
final ScanModel scanController = Get.put(ScanModel());
// final ScrollController scrollController = ScrollController();
// void onScroll() {
// if (scrollController.position.extentAfter < 300 &&
// !scanController.isLoadingAssets.value) {
// scanController.pageNum++;
// scanController.callARMMultipleStockDeliveryScanApi(
// serialNum,
// serialStartRange,
// serialEndRange,
// scanController.pageNum,
// requestToPartnerId);
// }
// }
// scrollController.addListener(onScroll);
showModalBottomSheet<void>(
context: context,
isDismissible: false,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30.0),
),
backgroundColor: Colors.transparent,
builder: (BuildContext context) {
String getLast3Chars(String value) {
if (value.length > 3) {
return value.substring(value.length - 3);
}
return value;
}
String displayValue;
if (serialNum == null &&
serialStartRange != null &&
serialEndRange != null) {
displayValue = "$serialStartRange - ${getLast3Chars(serialEndRange)}";
} else {
displayValue = serialNum ?? serialStartRange ?? "-";
}
return Container(
decoration: BoxDecoration(
color: ColorConstant.white,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(SizeConstant.getHeightWithScreen(30)),
topRight: Radius.circular(SizeConstant.getHeightWithScreen(30)),
),
),
height: SizeConstant.getHeightWithScreen(288),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Padding(
padding: EdgeInsets.only(
left: SizeConstant.getHeightWithScreen(15),
right: SizeConstant.getHeightWithScreen(15),
top: SizeConstant.getHeightWithScreen(10),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Padding(
padding: EdgeInsets.only(
top: SizeConstant.getHeightWithScreen(14),
),
child: Text(
title,
style: TextStyle(
fontSize: SizeConstant.mediumSmallFont,
fontWeight: FontWeight.w400,
color: ColorConstant.grey5,
),
),
),
GestureDetector(
onTap: () {
Get.close(1);
},
child: Icon(
Icons.close,
size: SizeConstant.getHeightWithScreen(28),
color: ColorConstant.grey1,
),
)
],
),
),
Padding(
padding: EdgeInsets.only(
left: SizeConstant.getHeightWithScreen(15),
right: SizeConstant.getHeightWithScreen(15),
),
child: Text(
displayValue,
style: TextStyle(
fontSize: SizeConstant.largeXFont,
fontWeight: FontWeight.w600,
color: ColorConstant.black2,
),
),
),
SizedBox(height: SizeConstant.getHeightWithScreen(25)),
Expanded(
child: ListView.separated(
// controller: scrollController,
itemBuilder: ((context, index) {
return GestureDetector(
onTap: () {
if (scanController.currentScan == ScanType.sellThru) {
var isValidated = false;
scanController.productDataScannedList
.forEach((element) {
if (element.productCode ==
scanController
.passedAssets[index].productCode) {
isValidated = true;
}
});
if (isValidated) {
Future.delayed(Durations.medium4, () {
if (scanController.cartId.isNotEmpty) {
scanController.callUpdateCartApi(
serialNum,
serialStartRange,
serialEndRange,
scanController
.passedAssets[index].productCode);
} else {
scanController.callAddToCartApi(
serialNum,
serialStartRange,
serialEndRange,
scanController
.passedAssets[index].productCode);
}
});
}
} else if (scanController.currentScan == ScanType.grn) {
var tempIccids = <String>[].obs;
tempIccids.addAll(scanController.scannedIccidList);
RxList<ProductContentModel> temp =
<ProductContentModel>[].obs;
temp.addAll(scanController.productDataScannedList);
for (int i = 0; i < temp.length; i++) {
if (temp[i].productCode ==
scanController
.passedAssets[index].productCode) {
List<SingleScannedModel> iccidList = [];
iccidList.addAll(temp[i].iccidList ?? []);
for (final PassedAssets asset
in scanController.passedAssets ?? []) {
tempIccids.add(asset.serialnumber ?? "");
iccidList.add(
SingleScannedModel(
iccid: asset.serialnumber,
),
);
}
var grnProduct = temp[i].copyWith(
iccidList: iccidList,
scannedQty: iccidList.length);
temp[i] = grnProduct;
}
}
scanController.scannedIccidList =
tempIccids; // assigning all the scanned iccids;
scanController.productDataScannedList.value = [
...temp
]; // assigning product list
scanController.isScanning.value = false;
} else {
Future.delayed(Durations.medium4, () {
if (scanController.cartId.isNotEmpty) {
scanController.callUpdateCartApi(
serialNum,
serialStartRange,
serialEndRange,
scanController
.passedAssets[index].productCode);
} else {
scanController.callAddToCartApi(
serialNum,
serialStartRange,
serialEndRange,
scanController
.passedAssets[index].productCode);
}
});
}
Get.close(1);
},
child: Padding(
padding: EdgeInsets.symmetric(
horizontal: SizeConstant.getHeightWithScreen(15),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
scanController.passedAssets[index].productName ??
"-",
style: TextStyle(
color: ColorConstant.black.withOpacity(0.88),
fontSize: SizeConstant.mediumFont,
fontWeight: FontWeight.w500,
),
),
SizedBox(
height: SizeConstant.getHeightWithScreen(1)),
Text(
scanController.passedAssets[index].productCode ??
"-",
style: TextStyle(
color: ColorConstant.grey6.withOpacity(0.88),
fontSize: SizeConstant.smallXFont,
fontWeight: FontWeight.w400,
),
),
],
),
),
);
}),
separatorBuilder: (context, sepIndex) {
return Padding(
padding: EdgeInsets.symmetric(
vertical: SizeConstant.getHeightWithScreen(15),
),
child: Divider(
color: ColorConstant.grey18.withOpacity(0.25),
),
);
},
itemCount: scanController.passedAssets.length,
),
),
],
),
);
},
);
}