From 95ea8257282afa6e26ab4f9e0e726ea158e3bbcc Mon Sep 17 00:00:00 2001 From: Omar Hatem Date: Fri, 22 Sep 2023 17:53:30 +0300 Subject: [PATCH 1/2] Add Brightness Util to check for platform before increasing brightness (#1096) --- .../screens/receive/anonpay_receive_page.dart | 25 +++++++------------ .../screens/receive/widgets/qr_widget.dart | 24 ++---------------- .../screens/wallet_keys/wallet_keys_page.dart | 20 ++++++--------- lib/utils/brightness_util.dart | 23 +++++++++++++++++ 4 files changed, 42 insertions(+), 50 deletions(-) create mode 100644 lib/utils/brightness_util.dart diff --git a/lib/src/screens/receive/anonpay_receive_page.dart b/lib/src/screens/receive/anonpay_receive_page.dart index 1dae8e452..b602abde6 100644 --- a/lib/src/screens/receive/anonpay_receive_page.dart +++ b/lib/src/screens/receive/anonpay_receive_page.dart @@ -10,7 +10,7 @@ import 'package:cake_wallet/src/screens/receive/widgets/anonpay_status_section.d import 'package:cake_wallet/src/screens/receive/widgets/qr_image.dart'; import 'package:cake_wallet/src/screens/receive/widgets/copy_link_item.dart'; import 'package:cake_wallet/themes/extensions/qr_code_theme.dart'; -import 'package:device_display_brightness/device_display_brightness.dart'; +import 'package:cake_wallet/utils/brightness_util.dart'; import 'package:flutter/material.dart'; import 'package:qr_flutter/qr_flutter.dart' as qr; import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart'; @@ -82,8 +82,7 @@ class AnonPayReceivePage extends BasePage { @override Widget Function(BuildContext, Widget) get rootWrapper => - (BuildContext context, Widget scaffold) => - GradientBackground(scaffold: scaffold); + (BuildContext context, Widget scaffold) => GradientBackground(scaffold: scaffold); @override Widget body(BuildContext context) { @@ -101,19 +100,13 @@ class AnonPayReceivePage extends BasePage { ), child: GestureDetector( onTap: () async { - final double brightness = await DeviceDisplayBrightness.getBrightness(); - - // ignore: unawaited_futures - DeviceDisplayBrightness.setBrightness(1.0); - await Navigator.pushNamed( - context, - Routes.fullscreenQR, - arguments: QrViewData(data: invoiceInfo.clearnetUrl, - version: qr.QrVersions.auto, - ) - ); - // ignore: unawaited_futures - DeviceDisplayBrightness.setBrightness(brightness); + BrightnessUtil.changeBrightnessForFunction(() async { + await Navigator.pushNamed(context, Routes.fullscreenQR, + arguments: QrViewData( + data: invoiceInfo.clearnetUrl, + version: qr.QrVersions.auto, + )); + }); }, child: Hero( tag: Key(invoiceInfo.clearnetUrl), diff --git a/lib/src/screens/receive/widgets/qr_widget.dart b/lib/src/screens/receive/widgets/qr_widget.dart index 0d2a7c80d..a34893cd8 100644 --- a/lib/src/screens/receive/widgets/qr_widget.dart +++ b/lib/src/screens/receive/widgets/qr_widget.dart @@ -3,10 +3,9 @@ import 'package:cake_wallet/themes/extensions/qr_code_theme.dart'; import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/src/screens/exchange/widgets/currency_picker.dart'; import 'package:cake_wallet/src/screens/receive/widgets/currency_input_field.dart'; -import 'package:cake_wallet/utils/device_info.dart'; +import 'package:cake_wallet/utils/brightness_util.dart'; import 'package:cake_wallet/utils/show_bar.dart'; import 'package:cake_wallet/utils/show_pop_up.dart'; -import 'package:device_display_brightness/device_display_brightness.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; @@ -64,7 +63,7 @@ class QRWidget extends StatelessWidget { flex: 5, child: GestureDetector( onTap: () { - changeBrightnessForRoute( + BrightnessUtil.changeBrightnessForFunction( () async { await Navigator.pushNamed(context, Routes.fullscreenQR, arguments: QrViewData( @@ -178,23 +177,4 @@ class QRWidget extends StatelessWidget { // update amount if currency changed addressListViewModel.changeAmount(amountController.text); } - - Future changeBrightnessForRoute(Future Function() navigation) async { - // if not mobile, just navigate - if (!DeviceInfo.instance.isMobile) { - navigation(); - return; - } - - // Get the current brightness: - final brightness = await DeviceDisplayBrightness.getBrightness(); - - // ignore: unawaited_futures - DeviceDisplayBrightness.setBrightness(1.0); - - await navigation(); - - // ignore: unawaited_futures - DeviceDisplayBrightness.setBrightness(brightness); - } } diff --git a/lib/src/screens/wallet_keys/wallet_keys_page.dart b/lib/src/screens/wallet_keys/wallet_keys_page.dart index 37ed3a692..5117f152f 100644 --- a/lib/src/screens/wallet_keys/wallet_keys_page.dart +++ b/lib/src/screens/wallet_keys/wallet_keys_page.dart @@ -5,10 +5,10 @@ import 'package:cake_wallet/src/widgets/list_row.dart'; import 'package:cake_wallet/src/widgets/section_divider.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/routes.dart'; +import 'package:cake_wallet/utils/brightness_util.dart'; import 'package:cake_wallet/utils/clipboard_util.dart'; import 'package:cake_wallet/utils/show_bar.dart'; import 'package:cake_wallet/view_model/wallet_keys_view_model.dart'; -import 'package:device_display_brightness/device_display_brightness.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; @@ -26,19 +26,15 @@ class WalletKeysPage extends BasePage { @override Widget trailing(BuildContext context) => IconButton( onPressed: () async { - // Get the current brightness: - final double brightness = await DeviceDisplayBrightness.getBrightness(); final url = await walletKeysViewModel.url; - // ignore: unawaited_futures - DeviceDisplayBrightness.setBrightness(1.0); - await Navigator.pushNamed( - context, - Routes.fullscreenQR, - arguments: QrViewData(data: url.toString(), version: QrVersions.auto), - ); - // ignore: unawaited_futures - DeviceDisplayBrightness.setBrightness(brightness); + BrightnessUtil.changeBrightnessForFunction(() async { + await Navigator.pushNamed( + context, + Routes.fullscreenQR, + arguments: QrViewData(data: url.toString(), version: QrVersions.auto), + ); + }); }, splashColor: Colors.transparent, highlightColor: Colors.transparent, diff --git a/lib/utils/brightness_util.dart b/lib/utils/brightness_util.dart new file mode 100644 index 000000000..5afe065e5 --- /dev/null +++ b/lib/utils/brightness_util.dart @@ -0,0 +1,23 @@ +import 'package:cake_wallet/utils/device_info.dart'; +import 'package:device_display_brightness/device_display_brightness.dart'; + +class BrightnessUtil { + static Future changeBrightnessForFunction(Future Function() func) async { + // if not mobile, just navigate + if (!DeviceInfo.instance.isMobile) { + func(); + return; + } + + // Get the current brightness: + final brightness = await DeviceDisplayBrightness.getBrightness(); + + // ignore: unawaited_futures + DeviceDisplayBrightness.setBrightness(1.0); + + await func(); + + // ignore: unawaited_futures + DeviceDisplayBrightness.setBrightness(brightness); + } +} \ No newline at end of file From 572d9288480cfee6c7f69bdc6c66604b03f3c033 Mon Sep 17 00:00:00 2001 From: Serhii Date: Fri, 22 Sep 2023 18:09:30 +0300 Subject: [PATCH 2/2] CW-442-Update-exchange-selector-checkboxes-with-checkboxes-from-transactions-filter-screen (#1074) * Update checkboxes * fix exchange provider selector * checkbox picker refactoring * Revert "checkbox picker refactoring" This reverts commit 66eea9d69033d497c740331fa42daee338df3b31. * Update check_box_picker.dart --- lib/src/screens/nodes/widgets/node_form.dart | 9 +++ lib/src/widgets/check_box_picker.dart | 71 +++++++++++--------- 2 files changed, 50 insertions(+), 30 deletions(-) diff --git a/lib/src/screens/nodes/widgets/node_form.dart b/lib/src/screens/nodes/widgets/node_form.dart index 91974fce5..ab8dcafdf 100644 --- a/lib/src/screens/nodes/widgets/node_form.dart +++ b/lib/src/screens/nodes/widgets/node_form.dart @@ -132,6 +132,9 @@ class NodeForm extends StatelessWidget { Observer( builder: (_) => StandardCheckbox( value: nodeViewModel.useSSL, + gradientBackground: true, + borderColor: Theme.of(context).dividerColor, + iconColor: Colors.white, onChanged: (value) => nodeViewModel.useSSL = value, caption: S.of(context).use_ssl, ), @@ -148,6 +151,9 @@ class NodeForm extends StatelessWidget { Observer( builder: (_) => StandardCheckbox( value: nodeViewModel.trusted, + gradientBackground: true, + borderColor: Theme.of(context).dividerColor, + iconColor: Colors.white, onChanged: (value) => nodeViewModel.trusted = value, caption: S.of(context).trusted, ), @@ -166,6 +172,9 @@ class NodeForm extends StatelessWidget { children: [ StandardCheckbox( value: nodeViewModel.useSocksProxy, + gradientBackground: true, + borderColor: Theme.of(context).dividerColor, + iconColor: Colors.white, onChanged: (value) { if (!value) { _socksAddressController.text = ''; diff --git a/lib/src/widgets/check_box_picker.dart b/lib/src/widgets/check_box_picker.dart index 30f81e981..71bfa7ee9 100644 --- a/lib/src/widgets/check_box_picker.dart +++ b/lib/src/widgets/check_box_picker.dart @@ -1,3 +1,4 @@ +import 'package:cake_wallet/src/widgets/standard_checkbox.dart'; import 'package:cake_wallet/themes/extensions/cake_text_theme.dart'; import 'package:cake_wallet/palette.dart'; import 'package:cake_wallet/utils/responsive_layout_util.dart'; @@ -101,7 +102,7 @@ class CheckBoxPickerState extends State { height: 1, ) : const SizedBox(), - itemCount: items == null || items.isEmpty ? 0 : items.length, + itemCount: items.isEmpty ? 0 : items.length, itemBuilder: (context, index) => buildItem(index), ), ); @@ -112,41 +113,51 @@ class CheckBoxPickerState extends State { return GestureDetector( onTap: () { - Navigator.of(context).pop(); + if (item.isDisabled) { + return; + } + + bool newValue = !item.value; + item.value = newValue; + widget.onChanged(index, newValue); + setState(() {}); }, child: Container( height: 55, color: Theme.of(context).dialogTheme.backgroundColor, padding: EdgeInsets.only(left: 24, right: 24), - child: CheckboxListTile( - value: item.value, - activeColor: item.value - ? Palette.blueCraiola - : Theme.of(context).extension()!.checkboxBackgroundColor, - checkColor: Colors.white, - title: widget.displayItem?.call(item) ?? - Text( - item.title, - style: TextStyle( - fontSize: 14, - fontFamily: 'Lato', - fontWeight: FontWeight.w600, - color: item.isDisabled - ? Colors.grey.withOpacity(0.5) - : Theme.of(context).extension()!.titleColor, - decoration: TextDecoration.none, - ), - ), - onChanged: (bool? value) { - if (value == null) { - return; - } + child: Row( + children: [ + StandardCheckbox( + value: item.value, + gradientBackground: true, + borderColor: Theme.of(context).dividerColor, + iconColor: Colors.white, + onChanged: (bool? value) { + if (value == null || item.isDisabled) { + return; + } - item.value = value; - widget.onChanged(index, value); - setState(() {}); - }, - controlAffinity: ListTileControlAffinity.leading, + item.value = value; + widget.onChanged(index, value); + setState(() {}); + }, + ), + SizedBox(width: 16), + widget.displayItem?.call(item) ?? + Text( + item.title, + style: TextStyle( + fontSize: 14, + fontFamily: 'Lato', + fontWeight: FontWeight.w600, + color: item.isDisabled + ? Colors.grey.withOpacity(0.5) + : Theme.of(context).extension()!.titleColor, + decoration: TextDecoration.none, + ), + ) + ], ), ), );