[in_app_purchase] Add "Restore purchases" button to example App (#3945)
* Fixed code snippet in README
* Added button to restore purchases
* Updated CHANGELOG
diff --git a/packages/in_app_purchase/in_app_purchase/CHANGELOG.md b/packages/in_app_purchase/in_app_purchase/CHANGELOG.md
index 0f75d18..01c66d4 100644
--- a/packages/in_app_purchase/in_app_purchase/CHANGELOG.md
+++ b/packages/in_app_purchase/in_app_purchase/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 1.0.3
+
+* Added a "Restore purchases" button to conform to Apple's StoreKit guidelines on [restoring products](https://developer.apple.com/documentation/storekit/in-app_purchase/restoring_purchased_products?language=objc);
+* Corrected an error in a example snippet displayed in the README.md.
+
## 1.0.2
* Fix ignoring "autoConsume" param in "InAppPurchase.instance.buyConsumable".
diff --git a/packages/in_app_purchase/in_app_purchase/README.md b/packages/in_app_purchase/in_app_purchase/README.md
index 4e10463..5376834 100644
--- a/packages/in_app_purchase/in_app_purchase/README.md
+++ b/packages/in_app_purchase/in_app_purchase/README.md
@@ -136,7 +136,6 @@
_deliverProduct(purchaseDetails);
} else {
_handleInvalidPurchase(purchaseDetails);
- return;
}
}
if (purchaseDetails.pendingCompletePurchase) {
diff --git a/packages/in_app_purchase/in_app_purchase/example/lib/main.dart b/packages/in_app_purchase/in_app_purchase/example/lib/main.dart
index 17beade..5429a00 100644
--- a/packages/in_app_purchase/in_app_purchase/example/lib/main.dart
+++ b/packages/in_app_purchase/in_app_purchase/example/lib/main.dart
@@ -114,8 +114,6 @@
return;
}
- await _inAppPurchase.restorePurchases();
-
List<String> consumables = await ConsumableStore.load();
setState(() {
_isAvailable = isAvailable;
@@ -143,6 +141,7 @@
_buildConnectionCheckTile(),
_buildProductList(),
_buildConsumableBox(),
+ _buildRestoreButton(),
],
),
);
@@ -337,6 +336,30 @@
]));
}
+ Widget _buildRestoreButton() {
+ if (_loading) {
+ return Container();
+ }
+
+ return Padding(
+ padding: const EdgeInsets.all(4.0),
+ child: Row(
+ mainAxisSize: MainAxisSize.max,
+ mainAxisAlignment: MainAxisAlignment.end,
+ children: [
+ TextButton(
+ child: Text('Restore purchases'),
+ style: TextButton.styleFrom(
+ backgroundColor: Theme.of(context).primaryColor,
+ primary: Colors.white,
+ ),
+ onPressed: () => _inAppPurchase.restorePurchases(),
+ ),
+ ],
+ ),
+ );
+ }
+
Future<void> consume(String id) async {
await ConsumableStore.consume(id);
final List<String> consumables = await ConsumableStore.load();
diff --git a/packages/in_app_purchase/in_app_purchase/pubspec.yaml b/packages/in_app_purchase/in_app_purchase/pubspec.yaml
index aeb7b63..303986c 100644
--- a/packages/in_app_purchase/in_app_purchase/pubspec.yaml
+++ b/packages/in_app_purchase/in_app_purchase/pubspec.yaml
@@ -2,7 +2,7 @@
description: A Flutter plugin for in-app purchases. Exposes APIs for making in-app purchases through the App Store and Google Play.
repository: https://github.com/flutter/plugins/tree/master/packages/in_app_purchase
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+in_app_purchase%22
-version: 1.0.2
+version: 1.0.3
environment:
sdk: ">=2.12.0 <3.0.0"