@@ -36,18 +36,7 @@ class CartScreen extends StatelessWidget {
36
36
),
37
37
backgroundColor: Theme .of (context).primaryColor,
38
38
),
39
- FlatButton (
40
- onPressed: () {
41
- Provider .of <Order >(context, listen: false ).addOrder (
42
- cartProvider.cartItems.values.toList (),
43
- cartProvider.getTotalAmount,
44
- );
45
- cartProvider.clear ();
46
- },
47
- child: Text (
48
- 'Order Now' ,
49
- style: TextStyle (color: Theme .of (context).primaryColor),
50
- )),
39
+ OrderButton (cartProvider: cartProvider),
51
40
],
52
41
),
53
42
),
@@ -72,3 +61,41 @@ class CartScreen extends StatelessWidget {
72
61
);
73
62
}
74
63
}
64
+
65
+ class OrderButton extends StatefulWidget {
66
+ const OrderButton ({
67
+ Key key,
68
+ @required this .cartProvider,
69
+ }) : super (key: key);
70
+
71
+ final Cart cartProvider;
72
+
73
+ @override
74
+ _OrderButtonState createState () => _OrderButtonState ();
75
+ }
76
+
77
+ class _OrderButtonState extends State <OrderButton > {
78
+ var _isLoading = false ;
79
+
80
+ @override
81
+ Widget build (BuildContext context) {
82
+ return FlatButton (
83
+ onPressed: (widget.cartProvider.getTotalAmount <= 0 || _isLoading) ? null : () async {
84
+ setState (() {
85
+ _isLoading = true ;
86
+ });
87
+ await Provider .of <Order >(context, listen: false ).addOrder (
88
+ widget.cartProvider.cartItems.values.toList (),
89
+ widget.cartProvider.getTotalAmount,
90
+ );
91
+ setState (() {
92
+ _isLoading = false ;
93
+ });
94
+ widget.cartProvider.clear ();
95
+ },
96
+ child: _isLoading? CircularProgressIndicator (): Text (
97
+ 'Order Now' ,
98
+ style: TextStyle (color: Theme .of (context).primaryColor),
99
+ ));
100
+ }
101
+ }
0 commit comments