Repository navigation
[in_app_purchase_storekit] Add show manage subscriptions path - #12454
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces the showManageSubscriptions method to the InAppPurchaseStoreKitPlatformAddition class, enabling users to manage subscriptions via the App Store sheet on iOS 15+ using StoreKit 2. The changes include the Swift implementation, Pigeon-generated code, an example app button, and corresponding unit tests. Feedback recommends moving UIKit property access inside the @MainActor task block in Swift to ensure thread safety, and catching potential exceptions in the example app's onPressed callback to prevent unhandled asynchronous errors.
| backgroundColor: Theme.of(context).colorScheme.primary, | ||
| foregroundColor: Colors.white, | ||
| ), | ||
| onPressed: () => _iapStoreKitPlatformAddition.showManageSubscriptions(), |
There was a problem hiding this comment.
The showManageSubscriptions method returns a Future<void> and can throw an exception (for example, on unsupported platforms like macOS or iOS versions below 15). Since this future is not awaited or caught in the onPressed callback, any thrown error will result in an unhandled asynchronous exception. It is highly recommended to catch the error and display a user-friendly message (e.g., using a SnackBar) to handle these expected platform limitations gracefully.
onPressed: () async {
try {
await _iapStoreKitPlatformAddition.showManageSubscriptions();
} catch (e) {
if (mounted) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Error: $e')),
);
}
}
},There was a problem hiding this comment.
I think this is ok for the internal example
|
I wasn't sure if we need to do something in |
|
/cc @LouiseHsu friendly ping |
LouiseHsu
left a comment
There was a problem hiding this comment.
Thank you for your work! This looks great.
| /// Presents the App Store sheet that lets the user manage their subscriptions. | ||
| func showManageSubscriptions(completion: @escaping (Result<Void, Error>) -> Void) { | ||
| #if os(iOS) | ||
| if #available(iOS 15.0, *) { |
There was a problem hiding this comment.
I think you can drop this check. The entire file/extension is already guarded with @available(iOS 15.0, macOS 12.0, *)
|
from triage: @Hari-07 Can you resolve the comments and merge conflicts? Thanks! |
c8e0510 to
585d5c1
Compare
flutter/packages@93eede7...10a178c 2026-10-19 [email protected] [material_ui] Fixes SearchAnchor and SearchBar semantics (flutter/packages#12680) 2026-10-17 [email protected] [shared_preferences] switch to ffi/jni pigeon (flutter/packages#12329) 2026-10-17 [email protected] [in_app_purchase_storekit] Add show manage subscriptions path (flutter/packages#12454) 2026-10-17 [email protected] [material_ui] Fix installing command material UI (flutter/packages#13135) 2026-10-16 [email protected] [file_selector_ios] Drop deprecated UIDocumentPickerMode code path (flutter/packages#13292) 2026-10-16 [email protected] [camera_avfoundation] Fixes sendability mismatch in completion handler (flutter/packages#13298) 2026-10-16 [email protected] [local_auth_darwin] Fix Swift 6 concurrency analyzer errors from lifecycle delegate methods (flutter/packages#13296) 2026-10-16 [email protected] [pointer_interceptor_ios] Use 'let' for unmutated var (flutter/packages#13297) 2026-10-16 [email protected] [image_picker_ios] Fix Swift warnings in ImagePickerPluginTests (flutter/packages#13299) 2026-10-16 [email protected] [camera]delete fake bitrate/fps integration tests (flutter/packages#13291) 2026-10-16 [email protected] [google_maps_flutter_ios] Use 'let' for unmutated var (flutter/packages#13300) 2026-10-16 [email protected] [VPAT] Declare input purpose on a11y_assessments text fields (flutter/packages#13243) 2026-10-16 [email protected] [cupertino_ui] Fix CupertinoMagnifier focalPointOffset animation scaling (flutter/packages#13118) 2026-10-16 [email protected] [tool] Exempt `test_apps/` from version and changelog checks (flutter/packages#13255) 2026-10-16 [email protected] [material_ui] Fallback theme follows platform cherry pick (flutter/packages#13278) 2026-10-16 [email protected] Roll Flutter from 5c7e45a to a3d71d8 (26 revisions) (flutter/packages#13290) 2026-10-16 [email protected] [camera]do not sleep to avoid hang due to merged thread (flutter/packages#13289) 2026-10-16 [email protected] [camera]fix camera failure due to wrong jpg extension (flutter/packages#13285) If this roll has caused a breakage, revert this CL and set the roller to dry run mode using the controls here: https://autoroll.skia.org/r/flutter-packages-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
flutter/packages@93eede7...10a178c 2026-10-19 [email protected] [material_ui] Fixes SearchAnchor and SearchBar semantics (flutter/packages#12680) 2026-10-17 [email protected] [shared_preferences] switch to ffi/jni pigeon (flutter/packages#12329) 2026-10-17 [email protected] [in_app_purchase_storekit] Add show manage subscriptions path (flutter/packages#12454) 2026-10-17 [email protected] [material_ui] Fix installing command material UI (flutter/packages#13135) 2026-10-16 [email protected] [file_selector_ios] Drop deprecated UIDocumentPickerMode code path (flutter/packages#13292) 2026-10-16 [email protected] [camera_avfoundation] Fixes sendability mismatch in completion handler (flutter/packages#13298) 2026-10-16 [email protected] [local_auth_darwin] Fix Swift 6 concurrency analyzer errors from lifecycle delegate methods (flutter/packages#13296) 2026-10-16 [email protected] [pointer_interceptor_ios] Use 'let' for unmutated var (flutter/packages#13297) 2026-10-16 [email protected] [image_picker_ios] Fix Swift warnings in ImagePickerPluginTests (flutter/packages#13299) 2026-10-16 [email protected] [camera]delete fake bitrate/fps integration tests (flutter/packages#13291) 2026-10-16 [email protected] [google_maps_flutter_ios] Use 'let' for unmutated var (flutter/packages#13300) 2026-10-16 [email protected] [VPAT] Declare input purpose on a11y_assessments text fields (flutter/packages#13243) 2026-10-16 [email protected] [cupertino_ui] Fix CupertinoMagnifier focalPointOffset animation scaling (flutter/packages#13118) 2026-10-16 [email protected] [tool] Exempt `test_apps/` from version and changelog checks (flutter/packages#13255) 2026-10-16 [email protected] [material_ui] Fallback theme follows platform cherry pick (flutter/packages#13278) 2026-10-16 [email protected] Roll Flutter from 5c7e45a to a3d71d8 (26 revisions) (flutter/packages#13290) 2026-10-16 [email protected] [camera]do not sleep to avoid hang due to merged thread (flutter/packages#13289) 2026-10-16 [email protected] [camera]fix camera failure due to wrong jpg extension (flutter/packages#13285) If this roll has caused a breakage, revert this CL and set the roller to dry run mode using the controls here: https://autoroll.skia.org/r/flutter-packages-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Adds a new
showManageSubscriptionsmethod which wraps around storekit's showManageSubscriptions(in:)Fixes flutter/flutter#159664
Pre-Review Checklist
[shared_preferences]///).If you need help, consider asking for advice on the #hackers-new channel on Discord.
Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the
gemini-code-assistbot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.Footnotes
Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling. ↩ ↩2