multipleProductsBottomsheet method

dynamic multipleProductsBottomsheet(
  1. BuildContext context,
  2. String title,
  3. String? serialNum,
  4. String? serialStartRange,
  5. String? serialEndRange,
  6. String requestToPartnerId,
)

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) {
      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(
                serialNum ?? serialStartRange ?? "-",
                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) {
                          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
                      } else {
                        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,
              ),
            ),
          ],
        ),
      );
    },
  );
}