diff --git a/lib/core/utils/price_extension.dart b/lib/core/utils/price_extension.dart new file mode 100644 index 0000000..8ba5b38 --- /dev/null +++ b/lib/core/utils/price_extension.dart @@ -0,0 +1,28 @@ +extension PriceExtension on num { + /// Formats the number with commas every 3 digits + String get formattedPrice { + final numberString = toString(); + final parts = numberString.split('.'); + final integerPart = parts[0]; + final decimalPart = parts.length > 1 ? '.${parts[1]}' : ''; + + final formattedInteger = _addCommas(integerPart); + return formattedInteger + decimalPart; + } + + String _addCommas(String number) { + if (number.length <= 3) { + return number; + } + + final reversed = number.split('').reversed.join(''); + final chunks = []; + + for (int i = 0; i < reversed.length; i += 3) { + final end = (i + 3 < reversed.length) ? i + 3 : reversed.length; + chunks.add(reversed.substring(i, end)); + } + + return chunks.join(',').split('').reversed.join(''); + } +} diff --git a/lib/views/detail/widgets/tender_detail_info_section.dart b/lib/views/detail/widgets/tender_detail_info_section.dart index 983c9b6..b1f9e70 100644 --- a/lib/views/detail/widgets/tender_detail_info_section.dart +++ b/lib/views/detail/widgets/tender_detail_info_section.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:tm_app/core/utils/price_extension.dart'; import 'package:tm_app/data/services/model/tender_data/tender_data.dart'; import 'package:tm_app/views/detail/strings/tender_details_strings.dart'; import 'package:tm_app/views/detail/widgets/deadline_item.dart'; @@ -30,7 +31,8 @@ class TenderDetailInfoSection extends StatelessWidget { ), InfoItem( title: TenderDetailsStrings.estimatedValue, - value: '${detail.estimatedValue} ${detail.currency ?? ''}', + value: + '${detail.estimatedValue?.formattedPrice} ${detail.currency ?? ''}', ), InfoItem( title: TenderDetailsStrings.duration,