paymongo_sdk 1.6.1 copy "paymongo_sdk: ^1.6.1" to clipboard
paymongo_sdk: ^1.6.1 copied to clipboard

Unofficial PayMongo SDK written in Dart for flutter.

example/lib/main.dart

import 'package:example/shoe_card.dart';
import 'package:flutter/material.dart';

import 'event_handler.dart';
import 'payments/scaffold.dart';
import 'shoes.dart';
import 'utils/utils.dart';

void main() {
  registerWebViewWebImplementation();
  WidgetsFlutterBinding.ensureInitialized();
  runApp(MaterialApp(home: MyApp()));
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final List<Shoe> _shoes = List.generate(5, (index) {
    return Shoe(
      amount: 100 * index,
      currency: 'PHP',
      name: 'Shoe #$index',
      description: 'A smol shoe size of S-$index',
    );
  });

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

  double get _totalAmount => _cart.fold(0, (prev, curr) => prev + curr.amount);
  final List<Shoe> _cart = [];
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Tap to pay'),
      ),
      drawer: Drawer(
        child: ListView(
          children: [
            ListTile(
              title: Text("Payments"),
              onTap: () {
                Navigator.push(context,
                    PageRouteBuilder(pageBuilder: (context, _, __) {
                  return PaymentScaffold();
                }));
              },
            ),
          ],
        ),
      ),
      body: LayoutBuilder(builder: (context, constraints) {
        return GridView.builder(
          itemCount: _shoes.length,
          gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
            crossAxisCount: 3,
          ),
          itemBuilder: (context, index) {
            final shoe = _shoes[index];
            return GestureDetector(
              onTap: () {
                setState(() {
                  if (!_cart.contains(shoe)) {
                    _cart.add(shoe);
                  }
                });
              },
              child: ShoeCard(shoe: shoe),
            );
          },
        );
      }),
      floatingActionButton: _totalAmount > 100
          ? FloatingActionButton.extended(
              onPressed: () async {
                await showModalBottomSheet(
                    context: context,
                    builder: (context) {
                      return PaymentOptionList(cart: _cart);
                    });
              },
              label: Text('Single Payment(${_cart.length})'),
              icon: const Icon(Icons.credit_card),
            )
          : null,
    );
  }
}

class PaymentOptionList extends StatefulWidget {
  const PaymentOptionList({Key? key, required this.cart}) : super(key: key);
  final List<Shoe> cart;
  @override
  State<PaymentOptionList> createState() => _PaymentOptionListState();
}

class _PaymentOptionListState extends State<PaymentOptionList>
    with PaymongoEventHandler {
  @override
  Widget build(BuildContext context) {
    return SingleChildScrollView(
      child: Column(
        children: [
          ListTile(
            title: Text("GCash Payment"),
            onTap: () async {
              await gcashPayment(widget.cart);
            },
          ),
          ListTile(
            title: Text("Credit/Debit Payment"),
            onTap: () async {
              await cardPayment(widget.cart);
            },
          ),
          ListTile(
            title: Text('Grab Pay'),
            onTap: () async {
              await grabPayment(widget.cart);
            },
          ),
          ListTile(
            title: Text("PayMaya Payment"),
            onTap: () async {
              await paymayaPayment(widget.cart);
            },
          ),
        ],
      ),
    );
  }
}
11
likes
100
pub points
52%
popularity

Publisher

unverified uploader

Unofficial PayMongo SDK written in Dart for flutter.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

equatable, http, meta

More

Packages that depend on paymongo_sdk