From 715bc90a8f7de3da4de9f6b191980cff9a8fe670 Mon Sep 17 00:00:00 2001 From: f-odc Date: Mon, 13 Oct 2025 16:38:32 +0200 Subject: [PATCH 1/2] #282 Add other currencies --- lib/app.dart | 2 + .../shared/extensions/currency_formatter.dart | 16 +++- pubspec.lock | 88 +++++++++---------- pubspec.yaml | 5 +- 4 files changed, 59 insertions(+), 52 deletions(-) diff --git a/lib/app.dart b/lib/app.dart index fe9a411a..3c2226c9 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import 'package:split_the_bill/router/router.dart'; @@ -15,6 +16,7 @@ class MyApp extends ConsumerWidget { title: 'Split the Bill', debugShowCheckedModeBanner: false, routerConfig: goRouter, + localizationsDelegates: GlobalMaterialLocalizations.delegates, theme: ThemeData( primaryColor: Colors.blue.shade400, scaffoldBackgroundColor: const Color(0xFFEFEFEF), diff --git a/lib/presentation/shared/extensions/currency_formatter.dart b/lib/presentation/shared/extensions/currency_formatter.dart index 3232af6c..8506e33a 100644 --- a/lib/presentation/shared/extensions/currency_formatter.dart +++ b/lib/presentation/shared/extensions/currency_formatter.dart @@ -1,9 +1,19 @@ +import 'dart:ui' as ui; + import 'package:intl/intl.dart'; extension CurrencyFormatter on double { String toCurrencyString() { - // TODO: allow other formats - final formatCurrency = NumberFormat.currency(locale: "de_DE", symbol: "€"); - return formatCurrency.format(this); + final locale = ui.PlatformDispatcher.instance.locale.toString(); + print('Locale: $locale'); + try { + final formatCurrency = NumberFormat.simpleCurrency(locale: locale); + print(formatCurrency); + return formatCurrency.format(this); + } catch (e) { + final formatCurrency = + NumberFormat.currency(locale: "en_US", symbol: "\$"); + return formatCurrency.format(this); + } } } diff --git a/pubspec.lock b/pubspec.lock index 45df0fe4..556bd212 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,23 +5,18 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab" + sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" url: "https://pub.dev" source: hosted - version: "76.0.0" - _macros: - dependency: transitive - description: dart - source: sdk - version: "0.3.3" + version: "67.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e" + sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" url: "https://pub.dev" source: hosted - version: "6.11.0" + version: "6.4.1" analyzer_plugin: dependency: transitive description: @@ -266,34 +261,34 @@ packages: dependency: "direct dev" description: name: custom_lint - sha256: "832fcdc676171205201c9cffafd6b5add19393962f6598af8472b48b413026e6" + sha256: "7c0aec12df22f9082146c354692056677f1e70bc43471644d1fdb36c6fdda799" url: "https://pub.dev" source: hosted - version: "0.6.8" + version: "0.6.4" custom_lint_builder: dependency: transitive description: name: custom_lint_builder - sha256: c3d82779026f91b8e00c9ac18934595cbc9b490094ea682052beeafdb2bd50ac + sha256: d7dc41e709dde223806660268678be7993559e523eb3164e2a1425fd6f7615a9 url: "https://pub.dev" source: hosted - version: "0.6.8" + version: "0.6.4" custom_lint_core: dependency: transitive description: name: custom_lint_core - sha256: "4ddbbdaa774265de44c97054dcec058a83d9081d071785ece601e348c18c267d" + sha256: a85e8f78f4c52f6c63cdaf8c872eb573db0231dcdf3c3a5906d493c1f8bc20e6 url: "https://pub.dev" source: hosted - version: "0.6.5" + version: "0.6.3" dart_style: dependency: transitive description: name: dart_style - sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab" + sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" url: "https://pub.dev" source: hosted - version: "2.3.7" + version: "2.3.6" fake_async: dependency: transitive description: @@ -379,6 +374,11 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.2" + flutter_localizations: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -577,10 +577,10 @@ packages: dependency: "direct main" description: name: intl - sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf + sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" url: "https://pub.dev" source: hosted - version: "0.19.0" + version: "0.20.2" io: dependency: transitive description: @@ -609,26 +609,26 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" url: "https://pub.dev" source: hosted - version: "10.0.9" + version: "11.0.2" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" url: "https://pub.dev" source: hosted - version: "3.0.9" + version: "3.0.10" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" linked_scroll_controller: dependency: "direct main" description: @@ -649,10 +649,10 @@ packages: dependency: "direct main" description: name: loading_icon_button - sha256: "682c03eaaeb6d00e3cce318ec365c0190eeacbc56ff1b6694a4561ed1e3b7e02" + sha256: "5ef8c82796c19b96a5995457410037cbe05cb4840af766e50330b2d108dacdfd" url: "https://pub.dev" source: hosted - version: "0.0.7" + version: "0.0.6" logging: dependency: transitive description: @@ -661,14 +661,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.0" - macros: - dependency: transitive - description: - name: macros - sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656" - url: "https://pub.dev" - source: hosted - version: "0.1.3-main.0" matcher: dependency: transitive description: @@ -825,10 +817,10 @@ packages: dependency: transitive description: name: riverpod_analyzer_utils - sha256: "0dcb0af32d561f8fa000c6a6d95633c9fb08ea8a8df46e3f9daca59f11218167" + sha256: "8b71f03fc47ae27d13769496a1746332df4cec43918aeba9aff1e232783a780f" url: "https://pub.dev" source: hosted - version: "0.5.6" + version: "0.5.1" riverpod_annotation: dependency: "direct main" description: @@ -841,26 +833,26 @@ packages: dependency: "direct dev" description: name: riverpod_generator - sha256: "851aedac7ad52693d12af3bf6d92b1626d516ed6b764eb61bf19e968b5e0b931" + sha256: d451608bf17a372025fc36058863737636625dfdb7e3cbf6142e0dfeb366ab22 url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "2.4.0" riverpod_lint: dependency: "direct dev" description: name: riverpod_lint - sha256: "0684c21a9a4582c28c897d55c7b611fa59a351579061b43f8c92c005804e63a8" + sha256: "3c67c14ccd16f0c9d53e35ef70d06cd9d072e2fb14557326886bbde903b230a5" url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "2.3.10" rxdart: dependency: transitive description: name: rxdart - sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" + sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" url: "https://pub.dev" source: hosted - version: "0.28.0" + version: "0.27.7" share_plus: dependency: "direct main" description: @@ -1038,10 +1030,10 @@ packages: dependency: transitive description: name: test_api - sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" url: "https://pub.dev" source: hosted - version: "0.7.4" + version: "0.7.6" timing: dependency: transitive description: @@ -1102,10 +1094,10 @@ packages: dependency: transitive description: name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" vm_service: dependency: transitive description: @@ -1179,5 +1171,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.7.0-0 <4.0.0" + dart: ">=3.8.0-0 <4.0.0" flutter: ">=3.24.0" diff --git a/pubspec.yaml b/pubspec.yaml index 71a32865..21ffdb37 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -31,6 +31,9 @@ dependencies: flutter: sdk: flutter + flutter_localizations: + sdk: flutter + # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 @@ -38,7 +41,7 @@ dependencies: flutter_riverpod: ^2.6.1 go_router: ^14.1.3 riverpod_annotation: ^2.3.0 - intl: ^0.19.0 + intl: ^0.20.2 camera: ^0.11.0 ffi: ^2.1.2 image_picker: ^1.0.7 From 32c2bb0b11501fb05cc7cb36eeaaeb3b92966ca0 Mon Sep 17 00:00:00 2001 From: f-odc Date: Mon, 13 Oct 2025 16:44:04 +0200 Subject: [PATCH 2/2] #282 Remove prints --- lib/presentation/shared/extensions/currency_formatter.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/presentation/shared/extensions/currency_formatter.dart b/lib/presentation/shared/extensions/currency_formatter.dart index 8506e33a..e0e83bd9 100644 --- a/lib/presentation/shared/extensions/currency_formatter.dart +++ b/lib/presentation/shared/extensions/currency_formatter.dart @@ -5,10 +5,8 @@ import 'package:intl/intl.dart'; extension CurrencyFormatter on double { String toCurrencyString() { final locale = ui.PlatformDispatcher.instance.locale.toString(); - print('Locale: $locale'); try { final formatCurrency = NumberFormat.simpleCurrency(locale: locale); - print(formatCurrency); return formatCurrency.format(this); } catch (e) { final formatCurrency =