1- import 'dart:async' ;
2-
3- import 'package:flutter/foundation.dart' show defaultTargetPlatform;
4-
5- import 'package:flutter/material.dart' ;
6-
7- import 'package:mad_pay_platform_interface/mad_pay_platform_interface.dart' ;
8- import 'package:mad_pay_ios/mad_pay_ios.dart' ;
9- import 'package:mad_pay_android/mad_pay_android.dart' ;
10-
11- import '../mad_pay.dart' ;
12-
13- part 'apple_pay_button.dart' ;
14- part 'google_pay_button.dart' ;
1+ part of mad_pay;
152
163/// On Payment Callback
174typedef PaymentCallback = void Function (PaymentResponse ? result);
@@ -49,18 +36,22 @@ abstract class _PayButton extends StatefulWidget {
4936 final Widget ? childIfUnavailable;
5037 final Widget ? loadingIndicator;
5138
39+ final Debouncer debouncer = Debouncer (300 );
40+
5241 VoidCallback _defaultOnPressed (
5342 VoidCallback ? onPressed, PaymentRequest request) {
54- return () async {
55- onPressed? .call ();
56-
57- try {
58- final PaymentResponse ? result =
59- await _payClient.processingPayment (request);
60- onPaymentResult (result);
61- } catch (error) {
62- onError? .call (error);
63- }
43+ return () {
44+ debouncer.run (() async {
45+ onPressed? .call ();
46+
47+ try {
48+ final PaymentResponse ? result =
49+ await _payClient.processingPayment (request);
50+ onPaymentResult (result);
51+ } catch (error) {
52+ onError? .call (error);
53+ }
54+ });
6455 };
6556 }
6657
@@ -78,6 +69,8 @@ class _PayButtonState extends State<_PayButton> with WidgetsBindingObserver {
7869 final StreamController <bool > availablePaymentsStatus =
7970 StreamController <bool >();
8071
72+ AppLifecycleState ? _lastState;
73+
8174 @override
8275 void initState () {
8376 super .initState ();
@@ -93,10 +86,12 @@ class _PayButtonState extends State<_PayButton> with WidgetsBindingObserver {
9386
9487 @override
9588 void didChangeAppLifecycleState (AppLifecycleState state) {
96- if (state == AppLifecycleState .resumed) {
89+ if (_lastState == AppLifecycleState .paused &&
90+ state == AppLifecycleState .resumed) {
9791 availablePaymentsStatus
9892 .addStream (Stream <bool >.fromFuture (checkPayments ()));
9993 }
94+ _lastState = state;
10095 }
10196
10297 Future <bool > checkPayments () async {
0 commit comments