From 1556b9bd1e28b5790ae02e8682cfc81ace273388 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maty=C3=A1=C5=A1=20Caras?= Date: Tue, 30 Jan 2024 22:19:26 +0100 Subject: [PATCH] fix: allow changing date on entries --- lib/l10n/app_cs.arb | 3 ++- lib/l10n/app_en.arb | 3 ++- lib/views/create_entry.dart | 37 ++++++++++++++++++++++++++++++++++++- lib/views/home.dart | 7 ++++++- 4 files changed, 46 insertions(+), 4 deletions(-) diff --git a/lib/l10n/app_cs.arb b/lib/l10n/app_cs.arb index 51525c0..0fe5c95 100644 --- a/lib/l10n/app_cs.arb +++ b/lib/l10n/app_cs.arb @@ -113,5 +113,6 @@ "search":"Prohledat", "expensesPerYear":"Měsíční výdaje v roce {year}", "expensesPerMonth":"Denní výdaje během měsíce {monthYear}", - "expensesPerCategory":"Total expenses per category" + "expensesPerCategory":"Total expenses per category", + "date":"Datum" } \ No newline at end of file diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 0105718..f479516 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -247,5 +247,6 @@ } } }, - "expensesPerCategory":"Total expenses per category" + "expensesPerCategory":"Total expenses per category", + "date":"Date" } \ No newline at end of file diff --git a/lib/views/create_entry.dart b/lib/views/create_entry.dart index 76320f9..e47849e 100644 --- a/lib/views/create_entry.dart +++ b/lib/views/create_entry.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:intl/intl.dart'; import 'package:prasule/api/category.dart'; import 'package:prasule/api/entry_data.dart'; import 'package:prasule/api/wallet.dart'; @@ -13,7 +14,12 @@ import 'package:prasule/util/show_message.dart'; /// Used when user wants to add new entry class CreateSingleEntryView extends StatefulWidget { /// Used when user wants to add new entry - const CreateSingleEntryView({required this.w, super.key, this.editEntry}); + const CreateSingleEntryView({ + required this.w, + super.key, + this.editEntry, + required this.locale, + }); /// The wallet, where the entry will be saved to final Wallet w; @@ -23,6 +29,8 @@ class CreateSingleEntryView extends StatefulWidget { /// Is null unless we are editing an existing entry final WalletSingleEntry? editEntry; + final String locale; + @override State createState() => _CreateSingleEntryViewState(); } @@ -184,6 +192,33 @@ class _CreateSingleEntryViewState extends State { }, ), ), + const SizedBox( + height: 20, + ), + Text(AppLocalizations.of(context).date), + PlatformButton( + style: ButtonStyle( + backgroundColor: MaterialStateProperty.all( + Theme.of(context).colorScheme.primary, + ), + foregroundColor: MaterialStateProperty.all( + Theme.of(context).colorScheme.onPrimary, + ), + ), + text: DateFormat.yMMMMd(widget.locale).format(newEntry.date), + onPressed: () async { + final date = await showDatePicker( + initialDate: newEntry.date, + context: context, + firstDate: DateTime.now() + .subtract(const Duration(days: 20 * 365)), + lastDate: DateTime.now().add(const Duration(days: 365)), + ); + if (date == null) return; + newEntry.date = date; + setState(() {}); + }, + ), const SizedBox( height: 15, ), diff --git a/lib/views/home.dart b/lib/views/home.dart index effb2c2..e7dbdf0 100644 --- a/lib/views/home.dart +++ b/lib/views/home.dart @@ -117,7 +117,10 @@ class _HomeViewState extends State { onTap: () async { final sw = await Navigator.of(context).push( MaterialPageRoute( - builder: (c) => CreateSingleEntryView(w: selectedWallet!), + builder: (c) => CreateSingleEntryView( + w: selectedWallet!, + locale: locale, + ), ), ); if (sw != null) { @@ -419,6 +422,7 @@ class _HomeViewState extends State { MaterialPageRoute( builder: (c) => CreateSingleEntryView( + locale: locale, w: selectedWallet!, editEntry: element, ), @@ -711,6 +715,7 @@ class _HomeViewState extends State { await Navigator.of(context).push( platformRoute( (c) => CreateSingleEntryView( + locale: locale, w: selectedWallet!, editEntry: WalletSingleEntry( data: EntryData(