fix: allow changing date on entries

This commit is contained in:
Matyáš Caras 2024-01-30 22:19:26 +01:00
parent ae07720854
commit 1556b9bd1e
Signed by untrusted user who does not match committer: hernik
GPG key ID: 2A3175F98820C5C6
4 changed files with 46 additions and 4 deletions

View file

@ -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"
}

View file

@ -247,5 +247,6 @@
}
}
},
"expensesPerCategory":"Total expenses per category"
"expensesPerCategory":"Total expenses per category",
"date":"Date"
}

View file

@ -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<CreateSingleEntryView> {
},
),
),
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,
),

View file

@ -117,7 +117,10 @@ class _HomeViewState extends State<HomeView> {
onTap: () async {
final sw = await Navigator.of(context).push<Wallet>(
MaterialPageRoute(
builder: (c) => CreateSingleEntryView(w: selectedWallet!),
builder: (c) => CreateSingleEntryView(
w: selectedWallet!,
locale: locale,
),
),
);
if (sw != null) {
@ -419,6 +422,7 @@ class _HomeViewState extends State<HomeView> {
MaterialPageRoute(
builder: (c) =>
CreateSingleEntryView(
locale: locale,
w: selectedWallet!,
editEntry: element,
),
@ -711,6 +715,7 @@ class _HomeViewState extends State<HomeView> {
await Navigator.of(context).push<WalletSingleEntry>(
platformRoute<WalletSingleEntry>(
(c) => CreateSingleEntryView(
locale: locale,
w: selectedWallet!,
editEntry: WalletSingleEntry(
data: EntryData(