moyasar 1.0.1
moyasar: ^1.0.1 copied to clipboard
The Official Moyasar Flutter SDK.
example/lib/main.dart
import 'package:coffee_flutter/widgets/payment.dart';
import 'package:flutter/material.dart';
import 'package:moyasar/moyasar.dart';
import 'widgets/coffee.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
debugShowCheckedModeBanner: false,
home: CoffeeShop(),
);
}
}
class CoffeeShop extends StatefulWidget {
const CoffeeShop({super.key});
@override
State<CoffeeShop> createState() => _CoffeeShopState();
}
class _CoffeeShopState extends State<CoffeeShop> {
final paymentConfig = PaymentConfig(
publishableApiKey: 'pk_test_RV3Q4ZKLdA22ZNVkCR72WBDxb3oYnj9D14h6czGA',
amount: 25758, // SAR 257.58
description: 'Blue Coffee Beans',
metadata: {'size': '2xl'},
);
void onPaymentResult(result) {
if (result is PaymentResponse) {
showToast(context, result.status.name);
switch (result.status) {
case PaymentStatus.paid:
// handle success.
break;
case PaymentStatus.failed:
// handle failure.
break;
default:
}
return;
}
// handle other type of failures.
if (result is AuthError) {}
if (result is ValidationError) {}
if (result is PaymentCanceledError) {}
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
resizeToAvoidBottomInset: true,
body: Center(
child: SizedBox(
width: MediaQuery.of(context).size.width * 0.9,
child: ListView(
children: [
const CoffeeImage(),
PaymentMethods(
paymentConfig: paymentConfig,
onPaymentResult: onPaymentResult,
),
],
),
),
));
}
}
void showToast(context, status) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text(
"Status: $status",
style: const TextStyle(fontSize: 20),
),
));
}