downgradeOrUpgrade method
Future<void>
downgradeOrUpgrade({
- required BuildContext context,
- required ProductDetails newProduct,
- required List<
PurchaseDetails> currentPurchases, - required String oldProductId,
Implementation
Future<void> downgradeOrUpgrade({required BuildContext context,
required ProductDetails newProduct,
required List<PurchaseDetails> currentPurchases,
required String oldProductId}) async {
try {
if (Platform.isAndroid) {
final GooglePlayPurchaseDetails? oldPurchase = _getOldSubscription(
currentPurchases, oldProductId);
final GooglePlayPurchaseParam purchaseParam = GooglePlayPurchaseParam(
productDetails: newProduct,
changeSubscriptionParam: oldPurchase != null
? ChangeSubscriptionParam(
oldPurchaseDetails: oldPurchase,
replacementMode: ReplacementMode.chargeFullPrice,
)
: null,
);
await inAppPurchase.buyNonConsumable(
purchaseParam: purchaseParam,
);
} else {
final purchaseParam = PurchaseParam(productDetails: newProduct);
await inAppPurchase.buyNonConsumable(
purchaseParam: purchaseParam,
);
}
} on PlatformException catch (e) {
if (e.toString().contains('storekit_duplicate_product_object')) {
AppLogs.showErrorLogs("Purchase issue: $e");
} else {
AppLogs.showErrorLogs("Purchase issue: $e");
}
AppLogs.showErrorLogs("Purchase issue: $e");
}
}