[in_app_purchase_android] Implement `BillingClient` connection management and introduce `BillingClientManager`
This PR adds management of BillingClient connection to Android implementation of InAppPurchase. This should fix issues caused by lost connections.
New and previously existing connection management is extracted to a new component, BillingClientManager. This component is exported in billing_client_wrappers.dart, so that it can also be used when interacting with BillingClient directly.
Fixes https://github.com/flutter/flutter/issues/110663
Migrated from flutter/plugins PR #6309
Pre-launch Checklist
- [x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
- [x] I read the Tree Hygiene wiki page, which explains my responsibilities.
- [x] I read and followed the relevant style guides and ran the auto-formatter. (Unlike the flutter/flutter repo, the flutter/packages repo does use
dart format.) - [x] I signed the CLA.
- [x] The title of the PR starts with the name of the package surrounded by square brackets, e.g.
[shared_preferences] - [x] I listed at least one issue that this PR fixes in the description above.
- [x] I updated
pubspec.yamlwith an appropriate new version according to the pub versioning philosophy, or this PR is exempt from version changes. - [x] I updated
CHANGELOG.mdto add a description of the change, following repository CHANGELOG style. - [x] I updated/added relevant documentation (doc comments with
///). - [x] I added new tests to check the change I am making, or this PR is test-exempt.
- [x] All existing and new tests are passing.
If you need help, consider asking for advice on the #hackers-new channel on Discord.
@gmackall, @bparrishMines re-requesting review after migrating this PR. Hope we can get this merged soon!
Done! Also ping @stuartmorgan on this review.
@tarrinneal I think we actually might go forward and merge this, since @stuartmorgan already gave his approval before the migration.
This was already approved in https://github.com/flutter/plugins/pull/6309 and I was essentially giving this a secondary review. So this should be fine to submit for @tarrinneal and I.