sync status icon added on the Send and Exchange screens (#267)
* added sync status icon * resolved issues from code review * resolved issues from code review * resolved issues from code review
Serhii committed
Feb 21, 2022 at 16:30 UTC
dd47a82a0d7c50e75217b04f52df7f5a5151ffe5
4 files changed
+48
-13
lib/src/screens/dashboard/widgets/sync_indicator.dart
+3
-11
@@ -4,6 +4,7 @@ import 'package:cake_wallet/core/sync_status_title.dart';
4
import 'package:cake_wallet/palette.dart';
5
import 'package:flutter_mobx/flutter_mobx.dart';
6
import 'package:cw_core/sync_status.dart';
7
+import 'package:cake_wallet/src/screens/dashboard/widgets/sync_indicator_icon.dart';
8
9
class SyncIndicator extends StatelessWidget {
10
SyncIndicator({@required this.dashboardViewModel});
@@ -22,9 +23,7 @@ class SyncIndicator extends StatelessWidget {
23
final indicatorWidth = progress < 1
24
? indicatorOffset > 0 ? indicatorOffset : 0.0
25
: syncIndicatorWidth;
25
- final indicatorColor = status is SyncedSyncStatus
26
- ? PaletteDark.brightGreen
27
- : Theme.of(context).textTheme.caption.color;
26
+
27
28
return ClipRRect(
29
borderRadius: BorderRadius.all(Radius.circular(15)),
@@ -57,14 +56,7 @@ class SyncIndicator extends StatelessWidget {
56
mainAxisAlignment: MainAxisAlignment.center,
57
crossAxisAlignment: CrossAxisAlignment.center,
58
children: <Widget>[
60
- Container(
61
- height: 4,
62
- width: 4,
63
- decoration: BoxDecoration(
64
- shape: BoxShape.circle,
65
- color: indicatorColor
66
- ),
67
- ),
59
+ SyncIndicatorIcon(isSynced:status is SyncedSyncStatus),
60
Padding(
61
padding: EdgeInsets.only(left: 6),
62
child: Text(
lib/src/screens/dashboard/widgets/sync_indicator_icon.dart
new
+21
@@ -0,0 +1,21 @@
1
+import 'package:flutter/material.dart';
2
+import 'package:cake_wallet/palette.dart';
3
+
4
+class SyncIndicatorIcon extends StatelessWidget {
5
+ SyncIndicatorIcon({this.isSynced});
6
+
7
+ final bool isSynced;
8
+
9
+ @override
10
+ Widget build(BuildContext context) {
11
+ return Container(
12
+ height: 4,
13
+ width: 4,
14
+ decoration: BoxDecoration(
15
+ shape: BoxShape.circle,
16
+ color: isSynced
17
+ ? PaletteDark.brightGreen
18
+ : Theme.of(context).textTheme.caption.color),
19
+ );
20
+ }
21
+}
lib/src/screens/exchange/exchange_page.dart
+12
-2
@@ -32,6 +32,7 @@ import 'package:cake_wallet/view_model/exchange/exchange_view_model.dart';
32
import 'package:cake_wallet/core/address_validator.dart';
33
import 'package:cake_wallet/core/amount_validator.dart';
34
import 'package:cake_wallet/src/screens/exchange/widgets/present_provider_picker.dart';
35
+import 'package:cake_wallet/src/screens/dashboard/widgets/sync_indicator_icon.dart';
36
37
class ExchangePage extends BasePage {
38
ExchangePage(this.exchangeViewModel);
@@ -65,8 +66,17 @@ class ExchangePage extends BasePage {
66
AppBarStyle get appBarStyle => AppBarStyle.transparent;
67
68
@override
68
- Widget middle(BuildContext context) =>
69
- PresentProviderPicker(exchangeViewModel: exchangeViewModel);
69
+ Widget middle(BuildContext context) => Row(
70
+ mainAxisAlignment: MainAxisAlignment.center,
71
+ children: [
72
+ Padding(
73
+ padding: const EdgeInsets.only(right:6.0),
74
+ child: Observer(builder: (_) => SyncIndicatorIcon(isSynced: exchangeViewModel.status is SyncedSyncStatus),)
75
+ ),
76
+ PresentProviderPicker(exchangeViewModel: exchangeViewModel)
77
+ ],
78
+ );
79
+
80
81
@override
82
Widget trailing(BuildContext context) => TrailButton(
lib/src/screens/send/send_page.dart
+12
@@ -24,6 +24,7 @@ import 'package:cake_wallet/src/screens/send/widgets/confirm_sending_alert.dart'
24
import 'package:smooth_page_indicator/smooth_page_indicator.dart';
25
import 'package:cake_wallet/store/yat/yat_store.dart';
26
import 'package:cake_wallet/src/screens/yat/yat_sending.dart';
27
+import 'package:cake_wallet/src/screens/dashboard/widgets/sync_indicator_icon.dart';
28
29
class SendPage extends BasePage {
30
SendPage({@required this.sendViewModel}) : _formKey = GlobalKey<FormState>();
@@ -49,6 +50,17 @@ class SendPage extends BasePage {
50
@override
51
AppBarStyle get appBarStyle => AppBarStyle.transparent;
52
53
+ @override
54
+ Widget middle(BuildContext context) => Row(
55
+ mainAxisAlignment: MainAxisAlignment.center,
56
+ children: [
57
+ Padding(
58
+ padding: const EdgeInsets.only(right:8.0),
59
+ child: Observer(builder: (_) => SyncIndicatorIcon(isSynced: sendViewModel.isReadyForSend),),
60
+ ),super.middle(context),
61
+ ],
62
+ );
63
+
64
@override
65
Widget trailing(context) => Observer(builder: (_) {
66
return sendViewModel.isBatchSending