From 657d25dea4866c6d3e0b3df8222370d384170363 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96zg=C3=BCn=20=C3=96zerk?= Date: Mon, 1 Jan 2024 20:55:42 +0300 Subject: [PATCH] improve ui of static asset & use dollar sign in prefix (#55) --- lib/controllers/helpers/currency.dart | 11 ++++---- lib/presentation/pages/main/settings.dart | 1 - lib/presentation/ui/text_styles.dart | 2 +- .../widgets/cards/category_card.dart | 2 +- .../widgets/cards/small_category_card.dart | 3 ++- .../widgets/cards/static_asset_card.dart | 2 +- lib/util/parsing.dart | 27 ++++++++++--------- 7 files changed, 25 insertions(+), 23 deletions(-) diff --git a/lib/controllers/helpers/currency.dart b/lib/controllers/helpers/currency.dart index 11761d5..acdd583 100644 --- a/lib/controllers/helpers/currency.dart +++ b/lib/controllers/helpers/currency.dart @@ -50,12 +50,13 @@ class CurrencyController extends GetxController { } String displayCurrencyWithoutSign(double value) { - return formatWithoutSign(value * getCurrencyConversionRate) + - getCurrencySymbol; + return getCurrencySymbol + + formatWithoutSign(value * getCurrencyConversionRate); } - String displayCurrencyWithSign2Decimals(double value) { - return formatWithSign2Decimal(value * getCurrencyConversionRate) + - getCurrencySymbol; + String displayCurrencyWithSign(double value, + {bool displayPositiveSign = false}) { + return formatWithSign2Decimal(value * getCurrencyConversionRate, + displayPositiveSign: displayPositiveSign, symbol: getCurrencySymbol); } } diff --git a/lib/presentation/pages/main/settings.dart b/lib/presentation/pages/main/settings.dart index babad06..5dae1e9 100644 --- a/lib/presentation/pages/main/settings.dart +++ b/lib/presentation/pages/main/settings.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:how_much/presentation/ui/colours.dart'; -import 'package:how_much/util/helper_funcs.dart'; import 'package:ionicons/ionicons.dart'; import 'package:how_much/controllers/auth.dart'; diff --git a/lib/presentation/ui/text_styles.dart b/lib/presentation/ui/text_styles.dart index 7584124..e746f7d 100644 --- a/lib/presentation/ui/text_styles.dart +++ b/lib/presentation/ui/text_styles.dart @@ -61,7 +61,7 @@ const TextStyle assetTextStyle = TextStyle( TextStyle changeTextStyle(double change) { return TextStyle( - fontSize: 14, + fontSize: 13, color: change.isNegative ? red : green, ); } diff --git a/lib/presentation/widgets/cards/category_card.dart b/lib/presentation/widgets/cards/category_card.dart index 42a166b..8f07115 100644 --- a/lib/presentation/widgets/cards/category_card.dart +++ b/lib/presentation/widgets/cards/category_card.dart @@ -150,7 +150,7 @@ class CategoryCard extends StatelessWidget { Column( crossAxisAlignment: CrossAxisAlignment.end, children: [ - Text(controller.displayCurrencyWithSign2Decimals(profit), + Text(controller.displayCurrencyWithSign(profit), style: categoryProfitDepositAmountTextStyle), const Text("profit", style: categoryProfitDepositDescriptorTextStyle) diff --git a/lib/presentation/widgets/cards/small_category_card.dart b/lib/presentation/widgets/cards/small_category_card.dart index 51d791c..cb1beb6 100644 --- a/lib/presentation/widgets/cards/small_category_card.dart +++ b/lib/presentation/widgets/cards/small_category_card.dart @@ -62,7 +62,8 @@ class SmallCategoryCard extends StatelessWidget { controller.displayCurrencyWithoutSign(totalAmount), style: smallCategoryHeaderTextStyle)), Obx(() => Text( - controller.displayCurrencyWithSign2Decimals(profit), + controller.displayCurrencyWithSign(profit, + displayPositiveSign: true), style: smallCategoryChangeTextStyle(profit))), ], ), diff --git a/lib/presentation/widgets/cards/static_asset_card.dart b/lib/presentation/widgets/cards/static_asset_card.dart index 47ae5c7..75d0031 100644 --- a/lib/presentation/widgets/cards/static_asset_card.dart +++ b/lib/presentation/widgets/cards/static_asset_card.dart @@ -67,7 +67,7 @@ class StaticAssetCard extends StatelessWidget { style: assetTextStyle, )), Obx(() => Text( - "${controller.displayCurrencyWithSign2Decimals(profit)} (${formatWithSign2Decimal(rateChange)}%)", + "${controller.displayCurrencyWithSign(profit, displayPositiveSign: true)} (${formatWithSign2Decimal(rateChange, displayPositiveSign: true)}%)", style: changeTextStyle(profit), )), ], diff --git a/lib/util/parsing.dart b/lib/util/parsing.dart index 1028802..6c4fe1a 100644 --- a/lib/util/parsing.dart +++ b/lib/util/parsing.dart @@ -1,22 +1,23 @@ import 'package:intl/intl.dart'; -final numFormatter = NumberFormat("#,###.##", "en_US"); - -String formatWithSign2Decimal(double myDouble) { - if (myDouble == 0) { - return '0.00'; - } +final numFormatter = NumberFormat("#,##0.00", "en_US"); +String formatWithSign2Decimal(double myDouble, + {bool displayPositiveSign = false, String symbol = ''}) { String formatted = numFormatter.format(myDouble); - // Add the leading zero if not present - // negative case - if (formatted.startsWith('-.')) { - formatted = formatted.replaceFirst('-.', '-0.'); + // Add the positive sign if required + if (displayPositiveSign && !formatted.startsWith('-')) { + formatted = "+$formatted"; } - // positive case - if (formatted.startsWith('.')) { - formatted = formatted.replaceFirst('.', '0.'); + + // If symbol is given, add it before the first number + if (symbol != '') { + int insertIndex = + formatted.startsWith('-') ? 1 : (displayPositiveSign ? 1 : 0); + formatted = formatted.substring(0, insertIndex) + + symbol + + formatted.substring(insertIndex); } return formatted;