flutter_iap_plus
A Flutter package for in-app purchase with 5 ready-made subscription UI templates, plus a tiny BLoC-style state container so any widget can react to the user's premium status.
Supports iOS and Android, single or multiple product ids.
Features
- Drop-in
PurchasesManagersingleton — handlesinit,buy,restore, and persistence out of the box. - 5 polished paywall screens (
templateIndex: 1..5), all customizable viaTemplateDataModel. - Reactive widgets —
IAPBuilder,IAPListener,IAPConsumer— modeled afterflutter_bloc. - Unified
purchaseEventsstream (pending | success | restored | canceled | error). - Configurable product duration, debug mode (mock store), and logger injection.
- Multi-product support for weekly / monthly / yearly tiers.
Installation
dependencies:
flutter_iap_plus: ^1.0.0
Quick start
import 'package:flutter/material.dart';
import 'package:flutter_iap_plus/flutter_iap_plus.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await PurchasesManager.instance.init(productId: 'com.app.weekly');
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('Demo')),
body: IAPBuilder(
builder: (context, state, isPremium) {
return Center(
child: isPremium
? const Text('Premium user')
: FilledButton(
onPressed: () => PurchasesManager.instance
.openPurchaseScreen(context: context),
child: const Text('Go Premium'),
),
);
},
),
),
builder: (context, child) => LoadingWidget(child: child!),
);
}
}
Documentation
The full integration guide — including UI customization, error handling, multi-product setup, and a complete API reference — lives in USAGE.md.
A runnable example app is in example/.
License
MIT — see LICENSE.
Libraries
- flutter_iap_plus
- Flutter package for in-app purchase with 5 ready-made subscription UI templates.
- gen/assets.gen
- GENERATED CODE - DO NOT MODIFY BY HAND
- gen/fonts.gen