flutter_store_kit 1.0.4 copy "flutter_store_kit: ^1.0.4" to clipboard
flutter_store_kit: ^1.0.4 copied to clipboard

Simplify in-app purchases in Flutter apps with `FlutterStoreKit`. Manage initialization, purchases, and subscriptions with ease. Ideal for premium content and subscriptions.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_store_kit/flutter_store_kit.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({super.key});

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  bool _isPremiumUser = false;
  final List<IAPItem> _availableProducts = [];

  @override
  void initState() {
    super.initState();
    StoreKit.instance.initialize([
      'subscription_id1',
      'subscription_id2',
      'subscription_id3',
    ]);

    StoreKit.instance.addProStatusChangedListener(_onProStatusChanged);
    StoreKit.instance.addErrorListener(_onError);
  }

  void _onProStatusChanged(PurchasedItem item) {
    setState(() {
      _isPremiumUser = StoreKit.instance.isProductPurchased('subscription_id1');
    });
  }

  void _onError(PurchaseResult? error) {
    ScaffoldMessenger.of(context).showSnackBar(
      SnackBar(
        content: Text(error?.message ?? "error"),
      ),
    );
  }

  void _purchaseSubscription(IAPItem item) async {
    await StoreKit.instance.purchaseSubscription(item);
  }

  @override
  void dispose() {
    StoreKit.instance.removeProStatusChangedListener(_onProStatusChanged);
    StoreKit.instance.removeErrorListener(_onError);
    StoreKit.instance.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('In-App Purchases'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              _isPremiumUser
                  ? 'You are a Premium User'
                  : 'You are not a Premium User',
              style: const TextStyle(fontSize: 24),
            ),
            const SizedBox(height: 20),
            _availableProducts.isEmpty
                ? const CircularProgressIndicator()
                : ListView.builder(
                    shrinkWrap: true,
                    itemCount: _availableProducts.length,
                    itemBuilder: (context, index) {
                      final product = _availableProducts[index];
                      return ListTile(
                        title: Text(product.title ?? 'No Title'),
                        subtitle: Text(product.description ?? 'No Description'),
                        trailing: _isPremiumUser
                            ? const Icon(Icons.check, color: Colors.green)
                            : ElevatedButton(
                                onPressed: () => _purchaseSubscription(product),
                                child: const Text('Buy'),
                              ),
                      );
                    },
                  ),
          ],
        ),
      ),
    );
  }
}
2
likes
160
points
53
downloads

Publisher

unverified uploader

Weekly Downloads

Simplify in-app purchases in Flutter apps with `FlutterStoreKit`. Manage initialization, purchases, and subscriptions with ease. Ideal for premium content and subscriptions.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, flutter_inapp_purchase, url_launcher

More

Packages that depend on flutter_store_kit