У меня есть StreamSubscription, которая прослушивает обновления покупки в приложении покупки. Я отправляю информацию о подписке на сервер. Проблема в том, что конечная точка API продолжает получать удар. Прежде чем попасть в конечную точку, я проверил, завершена ли покупка.
Вот код:
StreamSubscription<List<PurchaseDetails>> _subscription;
final Stream<List<PurchaseDetails>> purchaseUpdates =
InAppPurchaseConnection.instance.purchaseUpdatedStream;
_subscription =
purchaseUpdates.listen((List<PurchaseDetails> purchases) async {
_handlePurchaseUpdates(purchases);
});
Вот функция _handlePurchaseUpdates:
void _handlePurchaseUpdates(List<PurchaseDetails> purchases) async {
if (purchases[0].status == PurchaseStatus.purchased) {
await _subscription.cancel();
final NavigationService _navigationService = locator<NavigationService>();
try {
final response = await _apiLocator.subscribeUser(
purchase: purchases[0],
subscriptionType: selected == 0 ? 'monthly' : 'yearly',
uid: _userData.uid);
} catch (e) {
print(e);
}
if (Platform.isIOS) {
InAppPurchaseConnection.instance.completePurchase(purchases[0]);
}
_navigationService.navigateToReplaceAll(routeName: 'home');
} else {
// print('purchase failed');
}
// notifyListeners();
}
Things I have tried:
1. Canceling the stream when the purchase status is complete.
2. Adding a count variable and checking before hitting api endpoint.
But none of them are working