import 'package:flutter/material.dart';
import 'package:payment_plugin/payment_plugin.dart';
import 'package:dio/dio.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // Initialize the payment plugin once
  await PaymentPlugin.initialize(
    config: PaymentConfig(dio: Dio(), environment: PaymentEnvironment.test),
  );

  runApp(const MyApp());
}

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _status = 'Plugin initialized';

  @override
  void initState() {
    super.initState();

    // Plugin is already initialized in main()
    // You can access it anywhere using PaymentPlugin.instance
    _loadCards();
  }

  Future<void> _loadCards() async {
    try {
      // Example: Get stored cards
      final cards = await PaymentPlugin.instance.getCards();
      setState(() {
        _status = 'Plugin ready. Found ${cards.length} stored cards.';
      });
    } catch (e) {
      setState(() {
        _status = 'Plugin ready. Error loading cards: $e';
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Payment Plugin Example')),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text(_status),
              const SizedBox(height: 20),
              const Text(
                'This is an example app showing how to use the payment plugin.\n\n'
                'Initialize once in main():\n'
                'await PaymentPlugin.initialize(config: PaymentConfig(...))\n\n'
                'Then use anywhere:\n'
                'PaymentPlugin.instance.getCards()',
                textAlign: TextAlign.center,
              ),
            ],
          ),
        ),
      ),
    );
  }
}