subscriptionStatus
A Stream that emits the user's current subscription status whenever it changes.
This Stream emits SubscriptionStatus
values whenever the user's subscription status changes. Use it to reactively update your UI based on subscription state.
Purpose
Provides a reactive stream of subscription status changes for updating UI and controlling feature access.
Signature
Stream<SubscriptionStatus> get subscriptionStatus
Returns / State
Returns a Stream<SubscriptionStatus>
that emits values whenever the subscription status changes.
Usage
Basic stream subscription:
class _MyAppState extends State<MyApp> {
StreamSubscription<SubscriptionStatus>? _subscription;
SubscriptionStatus _currentStatus = SubscriptionStatus.unknown;
@override
void initState() {
super.initState();
_subscription = Superwall.shared.subscriptionStatus.listen((status) {
setState(() {
_currentStatus = status;
});
});
}
@override
void dispose() {
_subscription?.cancel();
super.dispose();
}
}
With SuperwallBuilder widget:
SuperWallBuilder(
builder: (context, subscriptionStatus) {
switch (subscriptionStatus) {
case SubscriptionStatus.active:
return PremiumContent();
case SubscriptionStatus.inactive:
return FreeContent();
default:
return LoadingIndicator();
}
},
)
Conditional UI rendering:
class PremiumFeatureButton extends StatefulWidget {
@override
_PremiumFeatureButtonState createState() => _PremiumFeatureButtonState();
}
class _PremiumFeatureButtonState extends State<PremiumFeatureButton> {
@override
Widget build(BuildContext context) {
return StreamBuilder<SubscriptionStatus>(
stream: Superwall.shared.subscriptionStatus,
builder: (context, snapshot) {
final status = snapshot.data ?? SubscriptionStatus.unknown;
return ElevatedButton(
onPressed: status == SubscriptionStatus.active
? _accessPremiumFeature
: _showPaywall,
child: Text(
status == SubscriptionStatus.active
? 'Access Premium Feature'
: 'Upgrade to Premium',
),
);
},
);
}
}
How is this guide?