feat(expense): add refresh functionality to expense list

This commit is contained in:
Vaibhav Surve 2025-07-21 16:39:11 +05:30
parent 4a01371fad
commit 93cdaab2c2

View File

@ -26,7 +26,11 @@ class _ExpenseMainScreenState extends State<ExpenseMainScreen> {
@override
void initState() {
super.initState();
expenseController.fetchExpenses(); // Load expenses from API
expenseController.fetchExpenses();
}
void _refreshExpenses() {
expenseController.fetchExpenses();
}
@override
@ -41,6 +45,7 @@ class _ExpenseMainScreenState extends State<ExpenseMainScreen> {
searchController: searchController,
onChanged: (value) => searchQuery.value = value,
onFilterTap: _openFilterBottomSheet,
onRefreshTap: _refreshExpenses,
),
_ToggleButtons(isHistoryView: isHistoryView),
Expanded(
@ -217,15 +222,18 @@ class _ExpenseAppBar extends StatelessWidget implements PreferredSizeWidget {
}
// Search and Filter Widget
class _SearchAndFilter extends StatelessWidget {
final TextEditingController searchController;
final ValueChanged<String> onChanged;
final VoidCallback onFilterTap;
final VoidCallback onRefreshTap;
const _SearchAndFilter({
required this.searchController,
required this.onChanged,
required this.onFilterTap,
required this.onRefreshTap,
});
@override
@ -260,6 +268,18 @@ class _SearchAndFilter extends StatelessWidget {
),
),
MySpacing.width(8),
Tooltip(
message: 'Refresh Data',
child: InkWell(
borderRadius: BorderRadius.circular(24),
onTap: onRefreshTap,
child: const Padding(
padding: EdgeInsets.all(0),
child: Icon(Icons.refresh, color: Colors.green, size: 28),
),
),
),
MySpacing.width(8),
IconButton(
icon: const Icon(Icons.tune, color: Colors.black),
onPressed: null, // Disabled as per request
@ -401,7 +421,6 @@ class _ExpenseList extends StatelessWidget {
children: [
Row(
children: [
MyText.bodyMedium(
expense.expensesType.name,
fontWeight: 700,