/* SPDX-License-Identifier: GPL-3.0-or-later */ /* Copyright (C) 2024 Marco Groß */ import 'package:calorimeter/food_entry/enter_food_widget.dart'; import 'package:calorimeter/food_entry/food_entry_bloc.dart'; import 'package:calorimeter/food_entry/food_entry_widget.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; class FoodEntryList extends StatelessWidget { final List entries; final DateTime date; const FoodEntryList({ required this.entries, required this.date, super.key, }); @override Widget build(BuildContext context) { return ListView.builder( itemCount: entries.length + 1, itemBuilder: (BuildContext itemBuilderContext, int listIndex) { //last item in list is the widget to enter food if (listIndex == entries.length) { return Column( children: [ EnterFoodWidget( onAdd: (context, entry) { context .read() .add(FoodEntryEvent(entry: entry, forDate: date)); }, ), const SizedBox(height: 75), ], ); } var entryIndex = listIndex; return Column( children: [ FoodEntryWidget( key: ValueKey(entries[entryIndex].id), entry: entries[entryIndex], onDelete: (_, id) { context .read() .add(FoodDeletionEvent(entryID: id, forDate: date)); }, onChange: (_, changedEntry) { context.read().add( FoodChangedEvent(newEntry: changedEntry, forDate: date), ); }, onTap: (_, tappedEntry) { context.read().add( FoodEntryTapped(entry: tappedEntry, forDate: date), ); }, ), const Divider(), ], ); }, ); } }