smooth_paywall
A smooth, production-ready paywall UI for Flutter apps.
Build elegant monetization screens with configurable themes, layouts and interaction states.
Why this package
Most paywall implementations are tightly coupled to billing SDK details or hardcoded designs.
smooth_paywall focuses on:
- Reusable UI for real products
- Clear separation between UI, logic and configuration
- Flexibility for subscriptions and one-time purchase layouts
Features
- Modern paywall UI with dark mode support
- Subscription and one-time layouts
- Built-in states:
idle,loading,error,success - Accessibility-ready semantics on plans, features and CTA
- Configurable theme, spacing, typography and animation behavior
- Can run standalone or be embedded in custom containers
- Optional integration with
smooth_bottom_sheet(without package dependency)
Installation
dependencies:
smooth_paywall: ^0.0.1
Usage
import 'package:smooth_paywall/smooth_paywall.dart';
SmoothPaywall(
title: 'Unlock Premium',
subtitle: 'Choose the best plan for you.',
features: const [
PaywallFeature(title: 'No ads', icon: Icons.block),
PaywallFeature(title: 'Priority support', icon: Icons.support_agent),
],
plans: const [
PaywallPlan(
id: 'yearly',
title: 'Yearly',
priceLabel: '\$24.99',
periodLabel: '/year',
badge: 'Best value',
),
PaywallPlan(
id: 'monthly',
title: 'Monthly',
priceLabel: '\$4.99',
periodLabel: '/month',
),
],
onPurchase: (selectedPlan) async {
// Connect your billing flow and return action status.
return const PaywallActionResult.success();
},
)
Optional integration with smooth_bottom_sheet
smooth_paywall does not require smooth_bottom_sheet, but you can combine both:
showSmoothBottomSheet(
context: context,
title: 'Premium',
child: SmoothPaywall(
embedded: true,
features: features,
plans: plans,
),
);
Personalization
You can customize:
- Complete color system via
SmoothPaywallTheme - Sizes, spacing and structure via
SmoothPaywallLayout - Motion timings and transitions via
SmoothPaywallAnimation - Text labels, legal actions, restore flow and close behavior
Example app
See example/lib/main.dart for a complete demo with:
- Standalone full-screen paywall presentation
- Optional
smooth_bottom_sheetwrapper - Simulated success and error purchase states
Author
Created by Elia Zavatta.
I build production-ready Flutter apps and reusable UI components.
- GitHub: github.com/eliazv
- LinkedIn: linkedin.com/in/eliazavatta
- Email: info@eliazavatta.it
Related smooth packages
License
MIT