xsoulspace_monetization_foundation 0.9.0
xsoulspace_monetization_foundation: ^0.9.0 copied to clipboard
A Flutter package for managing in-app purchases, subscriptions, and advertisements across multiple platforms.
XSoulSpace Monetization Foundation #
Unified Flutter monetization framework for ads, subscriptions, and purchases across multiple platforms.
๐ฏ Purpose #
This package serves as the foundation for implementing monetization strategies in Flutter apps, abstracting platform-specific complexities behind clean, testable interfaces.
๐๏ธ Architecture Overview #
Core Patterns #
- Command Pattern: Business logic encapsulated in immutable command objects
- Resource Pattern: Reactive state management with ChangeNotifier
- Purchase Provider Pattern: Platform-specific implementations behind common interfaces
- Strategy Pattern: Different monetization types (subscription, ads, free)
๐ง Core Concepts #
1. Monetization Types #
- Subscription: Recurring payments for premium features
- Ads: Ad-supported model with premium upgrade option
- Free: All features available without payment
2. State Management #
MonetizationStatusResource: Overall system statusSubscriptionStatusResource: User subscription stateActiveSubscriptionResource: Current subscription detailsAvailableSubscriptionsResource: Available products
๐ฆ Installation #
dependencies:
xsoulspace_monetization_foundation: ^1.0.0
๐ Quick Start #
// 1. Create resources
final resources = (
status: MonetizationStatusResource(),
type: MonetizationTypeResource(MonetizationType.subscription),
activeSubscription: ActiveSubscriptionResource(),
subscriptionStatus: SubscriptionStatusResource(),
availableSubscriptions: AvailableSubscriptionsResource(),
);
// 2. Initialize foundation
final foundation = MonetizationFoundation(
resources: resources,
purchaseProvider: yourPlatformProvider, // Google Play, App Store, etc.
);
// 2.1. Initialize local api
await foundation.initLocal();
// 2.2. Start monetization system with await
await foundation.init(productIds: ['premium_monthly', 'premium_yearly']);
// 2.3. or don't await
unawaited(foundation.init());
// 3. Subscribe to a product
final success = await foundation.subscribe(productDetails);
๐๏ธ Core Concepts #
- Command Pattern: Business logic in immutable commands (
SubscribeCommand,ConfirmPurchaseCommand) - Resource Pattern: Reactive state management with
ChangeNotifier(subscription status, available products) - Provider Pattern: Platform-specific implementations behind common interfaces
๐๏ธ Architectural Patterns #
Command Pattern #
// Immutable business logic objects
final subscribeCommand = SubscribeCommand(
purchaseProvider: provider,
subscriptionStatusResource: statusResource,
confirmPurchaseCommand: confirmCommand,
);
await subscribeCommand.execute(productDetails);
Resource Pattern #
// Reactive state management
final statusResource = SubscriptionStatusResource();
statusResource.addListener(() {
// UI updates automatically
if (statusResource.isSubscribed) {
// Show premium features
}
});
Purchase Provider Pattern #
// Platform-agnostic interface
abstract class PurchaseProvider {
Future<PurchaseResultModel> subscribe(ProductDetails details);
Future<List<ProductDetails>> getSubscriptions(List<String> ids);
}
// Use platform-specific implementations
final provider = GooglePlayPurchaseProvider();
๐ฑ Platform Support #
| Platform | Package | Status |
|---|---|---|
| Google Play & App Store | xsoulspace_monetization_google_apple |
๐ง |
| RuStore | xsoulspace_monetization_rustore |
โ |
| Huawei | xsoulspace_monetization_huawei |
๐ง |
๐งช Testing #
Use noop providers for testing without real transactions:
final testProvider = NoopPurchaseProvider();
final testAdProvider = NoopAdProvider();
๐๏ธ Architecture #
lib/
โโโ ads/ # Ad management (AdManager)
โโโ commands/ # Business logic (SubscribeCommand, etc.)
โโโ models/ # Core types (MonetizationStatus, MonetizationType)
โโโ resources/ # State management (ChangeNotifier-based)
โโโ widgets/ # UI components (SubscriptionScreen, etc.)
โโโ noop_providers/ # Testing implementations
๐ Related Packages #
xsoulspace_monetization_interface- Core interfacesxsoulspace_monetization_ads_interface- Ad provider interface- Platform-specific implementations in separate packages