lpe 0.0.4 copy "lpe: ^0.0.4" to clipboard
lpe: ^0.0.4 copied to clipboard

Learmond Pay Element - Paysheet built in flutter. Transposable to any app framework.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:lpe/lpe.dart';
// Removed unused imports: dart:convert and http; add them when implementing server calls

void main() => runApp(const ExampleApp());

class ExampleApp extends StatelessWidget {
  const ExampleApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'LPE Example',
      theme: ThemeData(primarySwatch: Colors.deepPurple),
      home: const ExampleHome(),
    );
  }
}

class ExampleHome extends StatefulWidget {
  const ExampleHome({Key? key}) : super(key: key);

  @override
  State<ExampleHome> createState() => _ExampleHomeState();
}

class _ExampleHomeState extends State<ExampleHome> {
  final _amountController = TextEditingController(text: '10.00');
  final _publishableController = TextEditingController();
  final _clientSecretController = TextEditingController();
  final _merchantIdController = TextEditingController(text: 'merchant.com.example');
  String _log = '';

  void _appendLog(String s) => setState(() => _log = '$_log\n$s');

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('LPE Example')),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            TextField(controller: _amountController, decoration: const InputDecoration(labelText: 'Amount')),
            const SizedBox(height: 8),
            TextField(controller: _publishableController, decoration: const InputDecoration(labelText: 'Publishable Key (optional)')),
            const SizedBox(height: 8),
            TextField(controller: _clientSecretController, decoration: const InputDecoration(labelText: 'Client Secret (optional)')),
            const SizedBox(height: 8),
            TextField(controller: _merchantIdController, decoration: const InputDecoration(labelText: 'Merchant ID (Apple Pay)')),
            const SizedBox(height: 8),
            LearmondPayButtons(
              publishableKey: _publishableController.text.isEmpty ? null : _publishableController.text,
              clientSecret: _clientSecretController.text.isEmpty ? null : _clientSecretController.text,
              merchantId: _merchantIdController.text,
              amount: _amountController.text,
              currency: 'USD',
              onResult: (r) {
                _appendLog('Widget onResult: success=${r.success}, error=${r.error}');
              },
            ),
            const SizedBox(height: 8),
            // Custom manual buttons demonstrating programmatic integration
            Row(
              children: [
                Expanded(
                  child: ElevatedButton(
                    onPressed: () async {
                      // If you have a client secret from your server, you can use it directly
                      // Otherwise this should call your server to create a PaymentIntent
                      final clientSecret = _clientSecretController.text.isNotEmpty
                        ? _clientSecretController.text
                        : null;
                      _appendLog('Manual: invoking card paysheet');
                      final result = await LearmondPaySheet.show(
                        context: context,
                        publishableKey: _publishableController.text.isEmpty ? 'pk_test_...' : _publishableController.text,
                        clientSecret: clientSecret ?? 'pi_test_client_secret',
                        method: 'card',
                        title: 'Manual Card Pay',
                        amount: _amountController.text,
                      );
                      _appendLog('Manual card result: success=${result.success}, error=${result.error}');
                    },
                    child: const Text('Manual Card Paysheet'),
                  ),
                ),
                const SizedBox(width: 8),
                Expanded(
                  child: ElevatedButton(
                    onPressed: () async {
                      final amountCents = (double.tryParse(_amountController.text) ?? 0.0 * 100).round();
                      _appendLog('Manual: invoking native apple pay');
                      final res = await LearmondNativePay.showNativePay({
                        'method': 'apple_pay',
                        'merchantId': _merchantIdController.text,
                        'amountCents': amountCents,
                        'currency': 'USD',
                      });
                      _appendLog('Manual apple result: success=${res.success}, error=${res.error}, raw=${res.rawResult}');
                    },
                    child: const Text('Manual Apple Pay'),
                  ),
                ),
              ],
            ),
            const SizedBox(height: 12),
            const Divider(),
            const Text('Output', style: TextStyle(fontWeight: FontWeight.bold)),
            Expanded(child: SingleChildScrollView(child: Text(_log))),
          ],
        ),
      ),
    );
  }
}
0
likes
0
points
541
downloads

Publisher

verified publisherthelearmondcorporation.com

Weekly Downloads

Learmond Pay Element - Paysheet built in flutter. Transposable to any app framework.

Homepage
Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, flutter_inappwebview, flutter_test

More

Packages that depend on lpe

Packages that implement lpe