ynab_lite/lib/screens/transactions_screen.dart
2026-07-11 18:10:09 +02:00

56 lines
1.8 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:intl/intl.dart';
import '../providers/db_provider.dart';
import '../theme/app_theme.dart';
class TransactionsScreen extends ConsumerWidget {
const TransactionsScreen({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final all = ref.watch(allTransactionsProvider).valueOrNull ?? [];
return ListView.builder(
padding: const EdgeInsets.fromLTRB(16, 8, 16, 90),
itemCount: all.length,
itemBuilder: (context, index) {
final t = all[index];
return Card(
margin: const EdgeInsets.only(bottom: 4),
child: ListTile(
dense: true,
leading: CircleAvatar(
radius: 18,
backgroundColor: kSurfaceElevated,
child: Icon(
t.amount >= 0 ? Icons.arrow_downward : Icons.arrow_upward,
size: 16,
color: t.amount >= 0 ? kGreenAccent : kRedAccent,
),
),
title: Text(t.payee, style: Theme.of(context).textTheme.bodyMedium),
subtitle: Text(
DateFormat('dd/MM/yy').format(t.date),
style: Theme.of(context).textTheme.bodySmall,
),
trailing: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Text(
formatCurrency(t.amount),
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w600,
color: t.amount >= 0 ? kGreenAccent : kRedAccent,
),
),
],
),
),
);
},
);
}
}