editProduct method

void editProduct(
  1. BuildContext context,
  2. String prodId
)

Implementation

void editProduct(
    BuildContext context, String prodId) async {
  FocusScope.of(context).requestFocus(FocusNode());
  if (formKey.currentState!.validate()) {
    FocusScope.of(context).unfocus();
    try {
      isLoading(true);
      var request = {
        'merchant_id': Storage.getValue(Constants.merchantID),
        'api_key': await Constants.apiKey(),
        'name': productName.text.toString(),
        'price': productPrice.text.toString(),
        'description': productDetails.text.toString(),
        'quantity': productQuantity.text.toString(),
        'category_id': productType.toString(),
        'type': productType.toString(),
        'tax': enterTax.text.toString(),
        'shipping_fee': extraFee.text.toString(),
        'asset_ids': selectedImagePaths,
        'meta': {"items_left": productQuantity.text.toString()}
      };
      var response = await DioClient().request(
          context: context,
          api: '/merchant/products/update/$prodId',
          method: Method.FORM,
          payloadObj: request);

      // ProductResponse productResponse = ProductResponse.fromJson(response);
      Map<String, dynamic> respJson = Map<String, dynamic>.from(response);
      final String status = respJson['status'] as String;
      final String message = respJson['message'] as String;

      if (status == Strings.success) {
        Utils.navigationReplace(
            context,
            SuccessfulMgs(
              successTitle: Strings.productUpdated,
              successMessage: Strings.productUpdatedSuccessfully,
            ));
        productsController.fetchProducts(
            context, Storage.getValue(Constants.merchantID));
      } else {
        return Utils.showSnackbar(context, Strings.error,
            message.toString().toTitleCase(), AppColors.red);
      }
    } catch (e) {
      return Utils.showSnackbar(
          context, Strings.error, e.toString(), AppColors.red);
    } finally {
      selectedImagePaths.clear();
      isLoading(false);
    }
    update();
  }
}