paywall_kit 0.1.0 copy "paywall_kit: ^0.1.0" to clipboard
paywall_kit: ^0.1.0 copied to clipboard

12 conversion-optimized, drop-in Flutter paywall screens. Backend-agnostic — in_app_purchase or RevenueCat with one flag.

paywall_kit #

12 conversion-optimized, drop-in Flutter paywall screens. Backend-agnostic — works with in_app_purchase (native, free) or RevenueCat via a single adapter swap. No vendor lock-in.

pub.dev · 0.1.0 ship target

final result = await PaywallKit.show(
  context,
  variant: PaywallVariant.lifetime,
  products: [monthly, annual, lifetime],
  copy: PaywallCopy(
    headline: 'Unlock everything',
    features: ['No ads', 'Cloud sync', 'AI assistant'],
  ),
  adapter: IapAdapter(),  // or PreviewAdapter(), or your own
);

switch (result) {
  case PaywallPurchased(:final product): grant(product);
  case PaywallRestored(:final products): restore(products);
  case PaywallDismissed(): break;
  case PaywallErrored(:final error): logError(error);
}

Install #

dependencies:
  paywall_kit: ^0.1.0

The 12 variants #

Variant Best for
carousel Onboarding flows with swipeable feature highlights
comparison Multi-tier offers (Free / Pro / Lifetime)
trialToggle Subscriptions with a free-trial conversion play
lifetime Indie-style one-time-purchase apps
soft Non-blocking nudge with a "continue with limits" escape
hard Onboarding-blocking, no skip
winback Lapsed-subscriber re-engagement with discount
family Family Sharing-compatible multi-seat tier
minimal Pieter Levels aesthetic — single price, single CTA
storytelling Long-scroll with testimonials + social proof
gamified Reward-unlock framing with progress ring
reverseTrial "You're on Pro for 7 days" post-onboarding pattern

Run the example app to tap through every variant: cd example && flutter run.

Backend adapters #

PaywallAdapter is the bridge between variants and your purchase system.

Adapter When to use
PreviewAdapter (default) Design / preview / when you handle purchases yourself in onPurchaseSuccess. Returns PaywallPurchased instantly.
IapAdapter Native App Store / Google Play via package:in_app_purchase.
Your own Implement PaywallAdapter for RevenueCat, Stripe, Paddle, etc. See doc/ADAPTERS.md for a complete RevenueCat example.
// IAP
adapter: IapAdapter()

// Custom (RevenueCat shown in doc/ADAPTERS.md)
adapter: const RevenueCatAdapter()

// Preview (default)
adapter: const PreviewAdapter()

Theming #

// One brand color → full theme
theme: PaywallTheme.brand(primary: Colors.indigo)

// Or inherit from Material's ColorScheme
theme: PaywallTheme.fromTheme(context)

// Or hand-craft every token
theme: PaywallTheme(
  primary: ..., onPrimary: ..., surface: ..., accent: ...,
  cardRadius: ..., buttonRadius: ..., padding: ...,
)

Dark mode + RTL (Arabic, Hebrew) work out of the box. Locale-aware price formatting via intl.

Compared to purchases_ui_flutter #

purchases_ui_flutter paywall_kit
Variants 1 customizable template 12 hand-crafted layouts
Backend RevenueCat only IAP, RevenueCat, Stripe, custom
Vendor lock-in RC dashboard required None
Theming RC dashboard config Code-defined PaywallTheme
Free option Requires RC project Yes (native in_app_purchase)

Status #

🚧 v0.1.0 ship target: 2026-06-11. See PHASES.md for the build plan and TRACKER.md for current progress.

License #

BSD-3-Clause (planned)

0
likes
160
points
--
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

12 conversion-optimized, drop-in Flutter paywall screens. Backend-agnostic — in_app_purchase or RevenueCat with one flag.

Repository (GitHub)
View/report issues

Topics

#paywall #subscription #monetization #iap #revenuecat

License

BSD-3-Clause (license)

Dependencies

flutter, in_app_purchase, intl

More

Packages that depend on paywall_kit