import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:get_it/get_it.dart'; import 'package:okane/screen.dart'; import 'package:okane/ui/pages/budgets/add_budget.dart'; import 'package:okane/ui/pages/budgets/edit_budget.dart'; import 'package:okane/ui/state/core.dart'; import 'package:okane/ui/utils.dart'; class BudgetListPage extends StatelessWidget { const BudgetListPage({super.key}); @override Widget build(BuildContext context) { return Stack( children: [ BlocBuilder( builder: (context, state) { if (state.budgets.isEmpty) { return Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ Text("No budgets"), ], ); } return ListView.builder( itemCount: state.budgets.length, itemBuilder: (context, index) => ListTile( title: Text(state.budgets[index].name), selected: state.budgets[index] == state.activeBudget, trailing: Row( mainAxisSize: MainAxisSize.min, children: [ IconButton( icon: Icon(Icons.edit), onPressed: () { showDialogOrModal( context: context, builder: (_) => EditBudgetPopup( budget: state.budgets[index], onDone: () { Navigator.of(context).pop(); }, ), ); }, ), IconButton( icon: Icon(Icons.delete, color: Colors.redAccent), onPressed: () { // TODO }, ), ], ), onTap: () { GetIt.I.get().setActiveBudget( state.budgets[index], ); if (getScreenSize(context) == ScreenSize.small) { Navigator.of(context).pushNamed("/budgets/details"); } }, ), ); }, ), Positioned( right: 16, bottom: 16, child: FloatingActionButton( child: Icon(Icons.add), onPressed: () { showDialogOrModal( context: context, builder: (_) => AddBudgetPopup( onDone: () { Navigator.of(context).pop(); }, ), ); }, ), ), ], ); } }