onEditMethodClick method
Implementation
void onEditMethodClick(
BuildContext context,
String deliveryOpt, [
bool isMissing = false,
]) {
final singleProductID =
orderItems.length == 1 ? orderItems.first.productId : null;
final singleSkuID = orderItems.length == 1 ? orderItems.first.skuID : null;
List<StoreListRequest> products = [];
for (var i = 0; i < orderItems.length; i++) {
products.add(
StoreListRequest(
skuId: orderItems[i].skuID,
productID: orderItems[i].productId,
skuCode: orderItems[i].skuCode,
),
);
}
switch (deliveryOpt.toLowerCase()) {
case "pickup":
if (!isMissing) {
Navigator.push(
context,
MaterialPageRoute(
builder: (_) {
return PickupFromPage(
arg: PickupFromArg(
defaultAddr: _controller.defaultAddr,
deliveryMethod: 0,
delivOpt: deliveryOpt,
productID: productID ?? singleProductID,
skuID: skuID ?? singleSkuID,
branchId: storeId,
skuCode: skuCode,
orderItems: orderItems.isNotEmpty ? orderItems : [],
),
);
},
),
).then((value) {
if (value is StoreItem) {
_controller.altStoreId = value.storeId;
}
});
}
break;
case "instant":
if (!isMissing) {
final summaryIndex =
_controller.viewState.value.data?.instantDeliverySummary
.indexWhere(
(element) => element.orderID.toString() == orderId,
) ??
-1;
final definedAddrId =
summaryIndex.isNegative
? 0
: (_controller
.viewState
.value
.data
?.instantDeliverySummary[summaryIndex]
.addressId ??
0);
final dflAddrId = _controller.defaultAddr?.addressId ?? 0;
final custAddrId = _controller.defaultAddr?.customerAddressID ?? 0;
Navigator.push(
context,
MaterialPageRoute(
builder: (_) {
return IncommeDeliveryAddress(
args: PickAddressArgs(
addressId:
(definedAddrId > 0)
? definedAddrId
: (dflAddrId > 0)
? dflAddrId
: custAddrId,
storeId: storeId,
fromCart: true,
productID: productID ?? singleProductID,
skuID: skuID ?? singleSkuID,
deliveryOpt: deliveryOpt,
orderId: orderId,
shippingType: ShippingType.instant,
skuCode: skuCode ?? "",
products: products.isNotEmpty ? products : [],
),
);
},
),
).then((value) {
if (value is PickAddressReturnArgs) {
_controller.altAddressId = value.address.addressId;
_controller.altStoreId = value.storeDetail.storeId;
}
});
}
break;
case "regular":
if (!isMissing) {
final summaryIndex =
_controller.viewState.value.data?.regularShippingSummary
.indexWhere(
(element) => element.orderID.toString() == orderId,
) ??
-1;
final definedAddrId =
summaryIndex.isNegative
? 0
: (_controller
.viewState
.value
.data
?.regularShippingSummary[summaryIndex]
.addressId ??
0);
final dflAddrId = _controller.defaultAddr?.addressId ?? 0;
final custAddrId = _controller.defaultAddr?.customerAddressID ?? 0;
Navigator.push(
context,
MaterialPageRoute(
builder: (_) {
return IncommeDeliveryAddress(
args: PickAddressArgs(
addressId:
(definedAddrId > 0)
? definedAddrId
: (dflAddrId > 0)
? dflAddrId
: custAddrId,
storeId: storeId,
fromCart: true,
productID: productID ?? singleProductID,
skuID: skuID ?? singleSkuID,
deliveryOpt: deliveryOpt,
orderId: orderId,
shippingType: ShippingType.regular,
products: products.isNotEmpty ? products : [],
),
);
},
),
).then((value) {
if (value is PickAddressReturnArgs) {
_controller.altAddressId = value.address.addressId;
_controller.altStoreId = value.storeDetail.storeId;
}
});
}
break;
case "delivery_store":
if (!isMissing) {
final summaryIndex =
_controller.viewState.value.data?.deliveryStoreShippingSummaryList
.indexWhere(
(element) => element.orderID.toString() == orderId,
) ??
-1;
final definedAddrId =
summaryIndex.isNegative
? 0
: (_controller
.viewState
.value
.data
?.deliveryStoreShippingSummaryList[summaryIndex]
.addressId ??
0);
final dflAddrId = _controller.defaultAddr?.addressId ?? 0;
final custAddrId = _controller.defaultAddr?.customerAddressID ?? 0;
Navigator.push(
context,
MaterialPageRoute(
builder: (_) {
return IncommeDeliveryAddress(
args: PickAddressArgs(
addressId:
(definedAddrId > 0)
? definedAddrId
: (dflAddrId > 0)
? dflAddrId
: custAddrId,
storeId: storeId,
fromCart: true,
productID: productID ?? singleProductID,
skuID: skuID ?? singleSkuID,
deliveryOpt: deliveryOpt,
orderId: orderId,
shippingType: ShippingType.deliveryStore,
skuCode: skuCode ?? "",
products: products.isNotEmpty ? products : [],
),
);
},
),
).then((value) {
if (value is PickAddressReturnArgs) {
_controller.altAddressId = value.address.addressId;
_controller.altStoreId = value.storeDetail.storeId;
}
});
}
break;
default:
}
}