CAKE-279 | renamed WebViewPage on WyrePage; applied spinner to Buy button on dashboard_page.dart
OleksandrSobol committed
Mar 18, 2021 at 20:36 UTC
b20246ad89f7ae8a4ae75adf0048909e491eb7c7
6 files changed
+57
-35
lib/di.dart
+3
-3
@@ -41,7 +41,7 @@ import 'package:cake_wallet/src/screens/transaction_details/transaction_details_
41
import 'package:cake_wallet/src/screens/wallet_keys/wallet_keys_page.dart';
42
import 'package:cake_wallet/src/screens/exchange/exchange_page.dart';
43
import 'package:cake_wallet/src/screens/exchange/exchange_template_page.dart';
44
-import 'package:cake_wallet/src/screens/web_view/web_view_page.dart';
44
+import 'package:cake_wallet/src/screens/wyre/wyre_page.dart';
45
import 'package:cake_wallet/store/dashboard/orders_store.dart';
46
import 'package:cake_wallet/store/node_list_store.dart';
47
import 'package:cake_wallet/store/secret_store.dart';
@@ -529,8 +529,8 @@ Future setup(
529
getIt.registerFactoryParam<OrderDetailsPage, Order, void>((Order order, _) =>
530
OrderDetailsPage(getIt.get<OrderDetailsViewModel>(param1: order)));
531
532
- getIt.registerFactoryParam<WebViewPage, String, void>((String url, _) =>
533
- WebViewPage(ordersStore: getIt.get<OrdersStore>(), url: url));
532
+ getIt.registerFactoryParam<WyrePage, String, void>((String url, _) =>
533
+ WyrePage(ordersStore: getIt.get<OrdersStore>(), url: url));
534
535
getIt.registerFactory(() => SupportViewModel());
536
lib/router.dart
+3
-3
@@ -9,7 +9,7 @@ import 'package:cake_wallet/src/screens/restore/restore_from_backup_page.dart';
9
import 'package:cake_wallet/src/screens/restore/wallet_restore_page.dart';
10
import 'package:cake_wallet/src/screens/seed/pre_seed_page.dart';
11
import 'package:cake_wallet/src/screens/support/support_page.dart';
12
-import 'package:cake_wallet/src/screens/web_view/web_view_page.dart';
12
+import 'package:cake_wallet/src/screens/wyre/wyre_page.dart';
13
import 'package:cake_wallet/store/settings_store.dart';
14
import 'package:cake_wallet/view_model/monero_account_list/account_list_item.dart';
15
import 'package:flutter/cupertino.dart';
@@ -293,10 +293,10 @@ Route<dynamic> createRoute(RouteSettings settings) {
293
builder: (_) =>
294
getIt.get<OrderDetailsPage>(param1: settings.arguments as Order));
295
296
- case Routes.webView:
296
+ case Routes.wyre:
297
return MaterialPageRoute<void>(
298
builder: (_) =>
299
- getIt.get<WebViewPage>(param1: settings.arguments as String));
299
+ getIt.get<WyrePage>(param1: settings.arguments as String));
300
301
case Routes.restoreWalletFromSeedDetails:
302
final args = settings.arguments as List;
lib/routes.dart
+1
-1
@@ -53,5 +53,5 @@ class Routes {
53
static const restoreFromBackup = '/restore_from_backup';
54
static const support = '/support';
55
static const orderDetails = '/order_details';
56
- static const webView = '/web_view';
56
+ static const wyre = '/wyre';
57
}
\ No newline at end of file
lib/src/screens/dashboard/dashboard_page.dart
+35
-21
@@ -1,4 +1,3 @@
1
-import 'package:cake_wallet/entities/find_order_by_id.dart';
1
import 'package:cake_wallet/entities/wallet_type.dart';
2
import 'package:cake_wallet/generated/i18n.dart';
3
import 'package:cake_wallet/routes.dart';
@@ -16,6 +15,7 @@ import 'package:cake_wallet/src/screens/dashboard/widgets/sync_indicator.dart';
15
import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_list_view_model.dart';
16
import 'package:flutter_mobx/flutter_mobx.dart';
17
import 'package:smooth_page_indicator/smooth_page_indicator.dart';
18
+import 'package:flutter_spinkit/flutter_spinkit.dart';
19
20
class DashboardPage extends BasePage {
21
DashboardPage({
@@ -126,26 +126,40 @@ class DashboardPage extends BasePage {
126
title: S.of(context).exchange,
127
route: Routes.exchange),
128
if (walletViewModel.type == WalletType.bitcoin) Observer(
129
- builder: (_) => ActionButton(
130
- image: buyImage,
131
- title: S.of(context).buy,
132
- onClick: walletViewModel.isRunningWebView
133
- ? null
134
- : () async {
135
- walletViewModel.isRunningWebView = true;
136
- final url = await walletViewModel.getWyreUrl();
137
- if (url.isNotEmpty) {
138
- await Navigator.of(context)
139
- .pushNamed(Routes.webView, arguments: url);
140
-
141
- final orderId = walletViewModel.ordersStore.orderId;
142
-
143
- if (orderId.isNotEmpty) {
144
- await walletViewModel.saveOrder(orderId);
145
- }
146
- }
147
- walletViewModel.isRunningWebView = false;
148
- })),
129
+ builder: (_) => Stack(
130
+ clipBehavior: Clip.none,
131
+ alignment: Alignment.topCenter,
132
+ children: [
133
+ if (walletViewModel.isRunningWebView) Positioned(
134
+ top: -5,
135
+ child: SpinKitRing(
136
+ color: Theme.of(context).buttonColor,
137
+ lineWidth: 3,
138
+ size: 70.0,
139
+ ),
140
+ ),
141
+ ActionButton(
142
+ image: buyImage,
143
+ title: S.of(context).buy,
144
+ onClick: walletViewModel.isRunningWebView
145
+ ? null
146
+ : () async {
147
+ walletViewModel.isRunningWebView = true;
148
+ final url = await walletViewModel.getWyreUrl();
149
+ if (url.isNotEmpty) {
150
+ await Navigator.of(context)
151
+ .pushNamed(Routes.wyre, arguments: url);
152
+
153
+ final orderId = walletViewModel.ordersStore.orderId;
154
+
155
+ if (orderId.isNotEmpty) {
156
+ await walletViewModel.saveOrder(orderId);
157
+ }
158
+ }
159
+ walletViewModel.isRunningWebView = false;
160
+ })
161
+ ],
162
+ )),
163
],
164
)),
165
)
lib/src/screens/wyre/wyre_page.dart
renamed
+14
-7
@@ -1,12 +1,13 @@
1
import 'dart:io';
2
import 'package:cake_wallet/generated/i18n.dart';
3
+import 'package:cake_wallet/palette.dart';
4
import 'package:cake_wallet/src/screens/base_page.dart';
5
import 'package:cake_wallet/store/dashboard/orders_store.dart';
6
import 'package:flutter/material.dart';
7
import 'package:webview_flutter/webview_flutter.dart';
8
8
-class WebViewPage extends BasePage {
9
- WebViewPage({@required this.ordersStore, @required this.url});
9
+class WyrePage extends BasePage {
10
+ WyrePage({@required this.ordersStore, @required this.url});
11
12
final OrdersStore ordersStore;
13
final String url;
@@ -14,22 +15,28 @@ class WebViewPage extends BasePage {
15
@override
16
String get title => S.current.buy;
17
18
+ @override
19
+ Color get backgroundDarkColor => Colors.white;
20
+
21
+ @override
22
+ Color get titleColor => Palette.darkBlueCraiola;
23
+
24
@override
25
Widget body(BuildContext context) =>
19
- WebViewPageBody(ordersStore: ordersStore,url: url);
26
+ WyrePageBody(ordersStore: ordersStore,url: url);
27
}
28
22
-class WebViewPageBody extends StatefulWidget {
23
- WebViewPageBody({this.ordersStore, this.url});
29
+class WyrePageBody extends StatefulWidget {
30
+ WyrePageBody({this.ordersStore, this.url});
31
32
final OrdersStore ordersStore;
33
final String url;
34
35
@override
29
- WebViewPageBodyState createState() => WebViewPageBodyState();
36
+ WyrePageBodyState createState() => WyrePageBodyState();
37
}
38
32
-class WebViewPageBodyState extends State<WebViewPageBody> {
39
+class WyrePageBodyState extends State<WyrePageBody> {
40
String orderId;
41
WebViewController _webViewController;
42
GlobalKey _webViewkey;
pubspec.yaml
+1
@@ -56,6 +56,7 @@ dependencies:
56
dotted_border: ^1.0.5
57
smooth_page_indicator: ^0.2.0
58
webview_flutter: ^1.0.7
59
+ flutter_spinkit: ^4.1.2
60
61
# The following adds the Cupertino Icons font to your application.
62
# Use with the CupertinoIcons class for iOS style icons.