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