This commit is contained in:
2026-07-01 16:20:30 +03:00
parent 64a3f4e34e
commit e3c60c4775
35 changed files with 164 additions and 103 deletions
+47
View File
@@ -1,6 +1,7 @@
import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:in_app_purchase/in_app_purchase.dart';
import 'package:shared_preferences/shared_preferences.dart';
class PurchaseResult {
final bool success;
@@ -190,3 +191,49 @@ class PlayBillingService implements BillingService {
await _controller.close();
}
}
class DebugBillingService implements BillingService {
static const _key = 'debug_purchase_token';
final SharedPreferences _prefs;
final _controller = StreamController<List<PurchaseDetails>>.broadcast();
DebugBillingService(this._prefs);
@override
Stream<List<PurchaseDetails>> get purchaseStream => _controller.stream;
@override
Future<PurchaseResult> purchasePro() async {
await Future.delayed(const Duration(seconds: 1));
final token = 'debug_token_${DateTime.now().millisecondsSinceEpoch}';
await _prefs.setString(_key, token);
return PurchaseResult.ok(token);
}
@override
Future<PurchaseResult> restorePurchases() async {
await Future.delayed(const Duration(seconds: 1));
final token = _prefs.getString(_key);
if (token != null) {
return PurchaseResult.ok(token);
}
return const PurchaseResult();
}
@override
Future<PurchaseResult> queryPastPurchase() async {
final token = _prefs.getString(_key);
if (token != null) {
return PurchaseResult.ok(token);
}
return const PurchaseResult();
}
@override
Future<void> completePurchase(String purchaseToken) async {}
@override
Future<void> dispose() async {
await _controller.close();
}
}