Untitled

 avatar
unknown
plain_text
a year ago
5.8 kB
8
Indexable
// replace getTotalAmount() with createOrderScreen.dart  
getTotalAmount() async {
    String? originLat = isPickSavedAddress ? pickAddressData!.latitude.validate() : pickLat;
    String? originLong = isPickSavedAddress ? pickAddressData!.longitude.validate() : pickLong;
    String? destinationLat = isDeliverySavedAddress ? deliveryAddressData!.latitude.validate() : deliverLat;
    String? destinationLong = isDeliverySavedAddress ? deliveryAddressData!.longitude.validate() : deliverLong;
    String origins = "${originLat},${originLong}";
    String destinations = "${destinationLat},${destinationLong}";
    await getDistanceBetweenLatLng(origins, destinations).then((value) {
      double distanceInKms = value.rows[0].elements[0].distance.text.toString().split(' ')[0].toDouble();
      if (appStore.distanceUnit == DISTANCE_UNIT_MILE) {
        totalDistance = (MILES_PER_KM * distanceInKms);
      } else {
        totalDistance = distanceInKms;
      }
      totalAmount = 0;
      weightCharge = 0;
      distanceCharge = 0;
      totalExtraCharge = 0;

      /// calculate weight Charge
      if (weightController.text.toDouble() > cityData!.minWeight!) {
        weightCharge = ((weightController.text.toDouble() - cityData!.minWeight!) * cityData!.perWeightCharges!).toStringAsFixed(digitAfterDecimal).toDouble();
      }

      /// calculate distance Charge
      if (totalDistance > cityData!.minDistance!) {
        distanceCharge = ((totalDistance - cityData!.minDistance!) * cityData!.perDistanceCharges!).toStringAsFixed(digitAfterDecimal).toDouble();
      }

      /// total amount
      totalAmount = cityData!.fixedCharges! + weightCharge + distanceCharge;

      /// calculate extra charges
      if (cityData!.extraCharges != null) {
        cityData!.extraCharges!.forEach((element) {
          totalExtraCharge += countExtraCharge(totalAmount: totalAmount, charges: element.charges!, chargesType: element.chargesType!);
        });
      }

      /// All Charges
      totalAmount = (totalAmount + totalExtraCharge).toStringAsFixed(digitAfterDecimal).toDouble();
    });
  }


//)goto lib -->user --> screens --> OrderDetailsscreen.dart
		replace getDistanceApiCall() with code below
  getDistanceApiCall() async {
    String? originLat = orderData!.pickupPoint!.latitude.validate();
    String? originLong = orderData!.pickupPoint!.longitude.validate();
    String? destinationLat = orderData!.deliveryPoint!.latitude.validate();
    String? destinationLong = orderData!.deliveryPoint!.longitude.validate();
    String origins = "${originLat},${originLong}";
    String destinations = "${destinationLat},${destinationLong}";
    await getDistanceBetweenLatLng(origins, destinations).then((value) {
      duration = value.rows[0].elements[0].duration.text;
      double distanceInKms = value.rows[0].elements[0].distance.text.toString().split(' ')[0].toDouble();
      if (appStore.distanceUnit == DISTANCE_UNIT_MILE) {
        totalDistance = (MILES_PER_KM * distanceInKms);
        distance = totalDistance.toString() + DISTANCE_UNIT_MILE;
      } else {
        totalDistance = distanceInKms;
        distance = totalDistance.toString() + DISTANCE_UNIT_KM;
      }
      setState(() {});
    });
  }


//add below line of codes in orderDetial screen  to dispaly distance and duration 
       Row(
                                            mainAxisAlignment: MainAxisAlignment.spaceBetween,
                                            children: [
                                              Row(
                                                children: [
                                                  Text(
                                                    language.distance,
                                                    style: secondaryTextStyle(size: 14),
                                                    overflow: TextOverflow.ellipsis,
                                                    maxLines: 1,
                                                  ),
                                                  4.width,
                                                  Text(
                                                    distance ?? "0",
                                                    style: boldTextStyle(),
                                                    overflow: TextOverflow.ellipsis,
                                                    maxLines: 1,
                                                  ),
                                                ],
                                              ),
                                              Row(
                                                children: [
                                                  Text(
                                                    language.duration,
                                                    style: secondaryTextStyle(size: 14),
                                                    overflow: TextOverflow.ellipsis,
                                                    maxLines: 1,
                                                  ),
                                                  4.width,
                                                  Text(
                                                    duration ?? "0",
                                                    style: boldTextStyle(),
                                                    overflow: TextOverflow.ellipsis,
                                                    maxLines: 1,
                                                  ),
                                                ],
                                              ),
                                            ],
                                          ).visible(orderData!.pickupPoint != null && orderData!.deliveryPoint != null),
Editor is loading...
Leave a Comment