A whole lot of stuff

This commit is contained in:
Courtney Arnold 2026-08-18 11:04:58 -05:00
parent faf319322a
commit ad850d2be6
50 changed files with 3013 additions and 213 deletions

View file

@ -7,9 +7,10 @@ import '../services/app_state.dart';
import '../widgets/receipt_thumbnail.dart';
/// Lets the user correct the *data* logged about a receipt (date, gallons,
/// price/gal, total cost) — not the receipt photo itself, which is shown
/// read-only up top (tap it to view full-screen, same as everywhere else
/// it's shown) and can't be replaced from here.
/// price/gal, total cost, and which vehicle it's attached to) — not the
/// receipt photo itself, which is shown read-only up top (tap it to view
/// full-screen, same as everywhere else it's shown) and can't be replaced
/// from here.
class EditFuelEntryScreen extends StatefulWidget {
final FuelEntry entry;
@ -25,12 +26,14 @@ class _EditFuelEntryScreenState extends State<EditFuelEntryScreen> {
late final TextEditingController _priceController;
late final TextEditingController _totalController;
late DateTime _date;
late String _vehicleId;
bool _saving = false;
@override
void initState() {
super.initState();
_date = widget.entry.date;
_vehicleId = widget.entry.vehicleId;
_gallonsController = TextEditingController(text: widget.entry.gallons.toStringAsFixed(3));
_priceController = TextEditingController(text: widget.entry.pricePerGallon.toStringAsFixed(3));
_totalController = TextEditingController(text: widget.entry.totalCost.toStringAsFixed(2));
@ -96,6 +99,7 @@ class _EditFuelEntryScreenState extends State<EditFuelEntryScreen> {
try {
await context.read<AppState>().updateFuelEntry(
entryId: widget.entry.id,
vehicleId: _vehicleId,
date: _date,
gallons: double.parse(_gallonsController.text),
pricePerGallon: double.parse(_priceController.text),
@ -116,6 +120,7 @@ class _EditFuelEntryScreenState extends State<EditFuelEntryScreen> {
@override
Widget build(BuildContext context) {
final dateFormat = DateFormat.yMMMd().add_jm();
final vehicles = context.watch<AppState>().vehicles;
return Scaffold(
appBar: AppBar(title: const Text('Edit Fuel Entry')),
@ -135,6 +140,18 @@ class _EditFuelEntryScreenState extends State<EditFuelEntryScreen> {
textAlign: TextAlign.center,
),
const SizedBox(height: 16),
DropdownButtonFormField<String>(
initialValue: _vehicleId,
decoration: const InputDecoration(labelText: 'Vehicle'),
items: [
for (final vehicle in vehicles)
DropdownMenuItem(value: vehicle.id, child: Text(vehicle.displayLabel)),
],
onChanged: (value) {
if (value != null) setState(() => _vehicleId = value);
},
),
const SizedBox(height: 8),
ListTile(
contentPadding: EdgeInsets.zero,
title: const Text('Date & time'),