subscription_page.dart 2.21 KB
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:appframe/services/subscription_service_ios.dart';
import 'package:in_app_purchase/in_app_purchase.dart';

// subscription_page.dart
class SubscriptionPage extends StatefulWidget { 
    const SubscriptionPage({super.key});

  @override
  State<SubscriptionPage> createState() => _SubscriptionPageState();
 }

class _SubscriptionPageState extends State<SubscriptionPage> {

  final SubscriptionService _subService = SubscriptionService();
  
  bool _isInitialized = false;

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

  Future<void> _initService() async {
    await _subService.initialize();
    setState(() => _isInitialized = true);
  }

  Future<void> _buy(ProductDetails product) async {
    if (!_isInitialized) return;
    try {
      await _subService.buySubscription(product);
    } catch (e) {
      // 显示出错信息
      debugPrint(e.toString());
    }
  }

  @override
  Widget build(BuildContext context) {
    
    if (!_isInitialized) return CircularProgressIndicator();

    // return ListView.builder(
    //   itemCount: _subService.products.length,
    //   itemBuilder: (context, index) {
    //     final product = _subService.products[index];
    //     return ListTile(
    //       title: Text(product.title),
    //       subtitle: Text(product.id),
    //       trailing: ElevatedButton(
    //         onPressed: () => _buy(product),
    //         child: Text(product.price),
    //       ),
    //     );
    //   },
    // );
    
    return Scaffold(
      body: Center(
        child: ListView.builder(
            itemCount: _subService.products.length,
            itemBuilder: (context, index) {
              final product = _subService.products[index];
              return ListTile(
                title: Text(product.title),
                subtitle: Text(product.description),
                trailing: ElevatedButton(
                  onPressed: () => _buy(product),
                  child: Text(product.price),
                ),
              );
            },
          ),
      ),
    );

  }

  @override
  void dispose() {
   // _subService.dispose();
    super.dispose();
  }
}