revenuecat_subscriber
A Flutter package for integrating RevenueCat subscriptions, featuring a reusable subscription service and an optional customizable SubscriptionCard
widget.
Features
- Simplified subscription handling with RevenueCat.
- Optional pre-built
SubscriptionCard
widget with a modern UI. - Customizable success and error callbacks.
Installation
Add this to your pubspec.yaml
:
dependencies:
revenuecat_subscriber: ^1.0.0
Run:
flutter pub get
Usage
This package provides two main ways to handle subscriptions:
- Use
SubscriptionCard
for a pre-built UI component. - Use
SubscriptionService
directly for custom UI or logic.
Prerequisites
Before using the package, configure RevenueCat in your app with your API key.
Example
Below is a complete example showing how to set up and use both SubscriptionCard
and SubscriptionService
:
Configure RevenueCat in Your App
import 'package:purchases_flutter/purchases_flutter.dart';
void main() {
Purchases.configure(PurchasesConfiguration('your_revenuecat_api_key'));
runApp(MyApp());
}
Using SubscriptionCard
import 'package:flutter/material.dart';
import 'package:revenuecat_subscriber/revenuecat_subscriber.dart';
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Subscription Demo')),
body: Center(
child: SubscriptionCard(
subscriptionTitle: 'VIP Plan',
subtitle: 'VIP Access',
subscriptionDescription: 'Unlock premium features!',
price: '4.99',
productId: 'vip_monthly',
entitlementId: 'vip_access',
onSubscribed: () {
Navigator.push(context, MaterialPageRoute(builder: (_) => VIPPage()));
},
),
),
);
}
}
class VIPPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('VIP Page')),
body: Center(child: Text('Welcome, VIP!')),
);
}
}
Using SubscriptionService
Directly
For custom UI or logic:
import 'package:flutter/material.dart';
import 'package:revenuecat_subscriber/revenuecat_subscriber.dart';
void subscribeToPlan(BuildContext context) {
SubscriptionService.subscribe(
context: context,
productId: 'vip_monthly',
entitlementId: 'vip_access',
onSuccess: () {
print('Subscription successful!');
// Navigate or update UI
},
onError: (message) => SubscriptionService.showError(context, message),
);
}
Notes
- Replace
productId
andentitlementId
with your actual RevenueCat configuration. - Customize the
SubscriptionCard
UI by passing acustomButton
widget if desired.