Feat: Macht Transaktionen prüf- bzw. editierbar

This commit is contained in:
2026-01-04 18:22:50 +01:00
parent a011b63fb1
commit 03ea5b717c
4 changed files with 37 additions and 9 deletions

View File

@@ -136,7 +136,7 @@ class RecurringTransactionController {
} }
/// Startet den Prozess, um eine wiederkehrende Transaktion zu bearbeiten /// Startet den Prozess, um eine wiederkehrende Transaktion zu bearbeiten
Future<void> editRecurringTransaction( Future<void> editRecurringTransactionHandler(
final int recurringTransactionId, final int recurringTransactionId,
) async { ) async {
final RecurringTransaction? recurringTransaction = final RecurringTransaction? recurringTransaction =
@@ -144,7 +144,7 @@ class RecurringTransactionController {
if (recurringTransaction != null) { if (recurringTransaction != null) {
final editRecurringTransactionDialog = DynamicDialog( final editRecurringTransactionDialog = DynamicDialog(
title: '${recurringTransaction.name} umbenennen', title: '${recurringTransaction.name} bearbeiten',
icon: Icons.edit, icon: Icons.edit,
inputFields: [ inputFields: [
DialogInputField( DialogInputField(
@@ -184,7 +184,7 @@ class RecurringTransactionController {
actions: [ actions: [
DialogAction(label: 'Abbruch'), DialogAction(label: 'Abbruch'),
DialogAction( DialogAction(
label: 'Speichern', label: 'Bearbeiten',
isPrimary: true, isPrimary: true,
onPressed: _editRecurringTransaction, onPressed: _editRecurringTransaction,
), ),

View File

@@ -127,14 +127,25 @@ class TransactionController {
} }
/// Startet den Prozess, um eine Transaktion zu bearbeiten /// Startet den Prozess, um eine Transaktion zu bearbeiten
Future<void> editTransaction(final int transactionId) async { Future<void> editTransactionHandler(final int transactionId) async {
final Transaction? transaction = await _transactionRepository.find( final Transaction? transaction = await _transactionRepository.find(
transactionId, transactionId,
); );
if (transaction != null) { if (transaction != null) {
final String title;
final String submitButtonText;
if (transaction.checked) {
title = '${transaction.name} bearbeiten';
submitButtonText = 'Bearbeiten';
} else {
title = '${transaction.name} prüfen';
submitButtonText = 'Prüfen';
}
final editTransactionDialog = DynamicDialog( final editTransactionDialog = DynamicDialog(
title: '${transaction.name} umbenennen', title: title,
icon: Icons.edit, icon: Icons.edit,
inputFields: [ inputFields: [
DialogInputField( DialogInputField(
@@ -160,7 +171,7 @@ class TransactionController {
actions: [ actions: [
DialogAction(label: 'Abbruch'), DialogAction(label: 'Abbruch'),
DialogAction( DialogAction(
label: 'Speichern', label: submitButtonText,
isPrimary: true, isPrimary: true,
onPressed: _editTransaction, onPressed: _editTransaction,
), ),
@@ -245,6 +256,7 @@ class TransactionController {
date: Value(values['date']), date: Value(values['date']),
amount: Value(values['amount']), amount: Value(values['amount']),
accountId: Value(transaction.accountId), accountId: Value(transaction.accountId),
checked: const Value(true),
); );
await _transactionRepository.update(rtc); await _transactionRepository.update(rtc);

View File

@@ -1,3 +1,5 @@
import 'dart:async';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../Controller/account_controller.dart'; import '../../Controller/account_controller.dart';
@@ -56,8 +58,22 @@ class _RecentTransactionsListState extends State<RecentTransactionsList> {
(final Transaction transaction) => Padding( (final Transaction transaction) => Padding(
padding: const EdgeInsets.symmetric(vertical: 4), padding: const EdgeInsets.symmetric(vertical: 4),
child: ListTile( child: ListTile(
contentPadding: EdgeInsets.zero, shape: RoundedRectangleBorder(
title: Text(transaction.name), borderRadius: BorderRadius.circular(12),
),
onTap: () {
unawaited(
_transactionController.editTransactionHandler(
transaction.id,
),
);
},
title: Text(
transaction.name,
style: (transaction.checked)
? const TextStyle()
: TextStyle(color: theme.colorScheme.error),
),
trailing: Text( trailing: Text(
'${transaction.amount.abs().toStringAsFixed(2)}', '${transaction.amount.abs().toStringAsFixed(2)}',
style: TextStyle( style: TextStyle(

View File

@@ -53,7 +53,7 @@ class _RecurringTransactionListState extends State<RecurringTransactionList> {
name: 'Wiederkehrende Transaktionen', name: 'Wiederkehrende Transaktionen',
items: formatedRecurringTransactions, items: formatedRecurringTransactions,
onAdd: _recurringTransactionController.newRecurringTransactionHandler, onAdd: _recurringTransactionController.newRecurringTransactionHandler,
onEdit: _recurringTransactionController.editRecurringTransaction, onEdit: _recurringTransactionController.editRecurringTransactionHandler,
onDelete: onDelete:
_recurringTransactionController.deleteRecurringTransactionHandler, _recurringTransactionController.deleteRecurringTransactionHandler,
icon: const Icon(Icons.repeat), icon: const Icon(Icons.repeat),