Skip to content

hyochan/flutter_inapp_purchase

Repository files navigation

flutter_inapp_purchase

flutter_inapp_purchase logo

Pub Version Flutter CI Coverage Status License

A comprehensive Flutter plugin for implementing in-app purchases that conforms to the Open IAP specification

Open IAP

📚 Documentation

📖 Visit our comprehensive documentation site →

📦 Installation

dependencies:
  flutter_inapp_purchase: ^6.4.0

🔧 Quick Start

Basic Usage

import 'package:flutter_inapp_purchase/flutter_inapp_purchase.dart';

// Create instance
final iap = FlutterInappPurchase();

// Initialize connection
await iap.initConnection();

// Get products
final products = await iap.requestProducts(
  skus: ['product_id'],
  type: PurchaseType.inapp,
);

// Request purchase
await iap.requestPurchase(
  request: RequestPurchase(
    ios: RequestPurchaseIOS(sku: 'product_id'),
    android: RequestPurchaseAndroid(skus: ['product_id']),
  ),
  type: PurchaseType.inapp,
);

iOS Notes

  • This plugin uses the OpenIAP Apple native module via CocoaPods (openiap ~> 1.1.7).
  • After upgrading, run pod install in your iOS project (e.g., example/ios).
  • Minimum iOS deployment target is 15.0 for StoreKit 2 support.

🛠️ Development

  • Install dependencies: flutter pub get
  • Run lints: dart analyze
  • Run tests: flutter test
  • Enable Git hooks (recommended): git config core.hooksPath .githooks
    • The pre-commit hook auto-formats staged Dart files and fails if any file remains unformatted. It also runs tests.
    • To run tests in the hook, set RUN_PRECOMMIT_TESTS=1 in your environment.
    • To make analyzer failures block commits, set ENFORCE_ANALYZE=1.

Singleton Usage

For global state management or when you need a shared instance:

// Use singleton instance
final iap = FlutterInappPurchase.instance;
await iap.initConnection();

// The instance is shared across your app
final sameIap = FlutterInappPurchase.instance; // Same instance

Sponsors

💼 View Our Sponsors

📄 License

MIT License - see LICENSE file for details.