purpi_kit 2.0.18
purpi_kit: ^2.0.18 copied to clipboard
SDK Flutter Purpi : privilèges, abonnements et paiements in-app, intégrable comme widget dans une app hôte ou lançable en application standalone.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:purpi_kit/purpi_kit.dart';
/// Les secrets sont fournis par l'app hôte, jamais par le package :
/// `flutter run --dart-define=PURPI_STORE_AUTH_EMAIL=... --dart-define=...`
const purpiConfig = PurpiConfig(
flavor: Flavor.prod,
storeAuthEmail: String.fromEnvironment('PURPI_STORE_AUTH_EMAIL'),
storeAuthPassword: String.fromEnvironment('PURPI_STORE_AUTH_PASSWORD'),
googlePlacesApiKey: String.fromEnvironment('PURPI_GOOGLE_PLACES_API_KEY'),
appsFlyerDevKey: String.fromEnvironment('PURPI_APPSFLYER_DEV_KEY'),
appsFlyerAppId: String.fromEnvironment('PURPI_APPSFLYER_APP_ID'),
googleIosClientId: String.fromEnvironment('PURPI_GOOGLE_IOS_CLIENT_ID'),
googleServerClientId: String.fromEnvironment('PURPI_GOOGLE_SERVER_CLIENT_ID'),
);
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await PurpiKit.initialize(purpiConfig);
runApp(const HostApp());
}
/// App hôte minimale : un bouton qui ouvre Purpi dans un nouvel écran.
class HostApp extends StatelessWidget {
const HostApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Purpi Kit Example',
home: Scaffold(
appBar: AppBar(title: const Text('Mon app')),
body: Center(
child: Builder(
builder: (context) => ElevatedButton(
onPressed: () => PurpiKit.open(context, config: purpiConfig),
child: const Text('Ouvrir Purpi'),
),
),
),
),
);
}
}