import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:okane/database/collections/expense_category.dart'; import 'package:okane/database/database.dart'; import 'package:okane/ui/state/core.dart'; class AddExpenseCategory extends StatefulWidget { const AddExpenseCategory({super.key}); @override AddExpenseCategoryState createState() => AddExpenseCategoryState(); } class AddExpenseCategoryState extends State { final TextEditingController _categoryNameController = TextEditingController(); @override Widget build(BuildContext context) { return BlocBuilder( builder: (context, state) => ConstrainedBox( constraints: BoxConstraints(maxHeight: 300), child: Column( mainAxisSize: MainAxisSize.min, children: [ ListView.builder( itemCount: state.expenseCategories.length, shrinkWrap: true, itemBuilder: (context, index) => ListTile( title: Text(state.expenseCategories[index].name), onTap: () { _categoryNameController.text = ""; Navigator.of( context, ).pop(state.expenseCategories[index]); }, ), ), TextField( decoration: InputDecoration(hintText: "Category name"), controller: _categoryNameController, ), Row( children: [ Spacer(), OutlinedButton( onPressed: () async { final category = ExpenseCategory() ..name = _categoryNameController.text; await upsertExpenseCategory(category); _categoryNameController.text = ""; Navigator.of(context).pop(category); }, child: Text("Add"), ), ], ), ], ), ), ); } }