feat(expense): add refresh functionality to expense list
This commit is contained in:
parent
4a01371fad
commit
93cdaab2c2
@ -26,7 +26,11 @@ class _ExpenseMainScreenState extends State<ExpenseMainScreen> {
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
expenseController.fetchExpenses(); // Load expenses from API
|
expenseController.fetchExpenses();
|
||||||
|
}
|
||||||
|
|
||||||
|
void _refreshExpenses() {
|
||||||
|
expenseController.fetchExpenses();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -41,6 +45,7 @@ class _ExpenseMainScreenState extends State<ExpenseMainScreen> {
|
|||||||
searchController: searchController,
|
searchController: searchController,
|
||||||
onChanged: (value) => searchQuery.value = value,
|
onChanged: (value) => searchQuery.value = value,
|
||||||
onFilterTap: _openFilterBottomSheet,
|
onFilterTap: _openFilterBottomSheet,
|
||||||
|
onRefreshTap: _refreshExpenses,
|
||||||
),
|
),
|
||||||
_ToggleButtons(isHistoryView: isHistoryView),
|
_ToggleButtons(isHistoryView: isHistoryView),
|
||||||
Expanded(
|
Expanded(
|
||||||
@ -217,15 +222,18 @@ class _ExpenseAppBar extends StatelessWidget implements PreferredSizeWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Search and Filter Widget
|
// Search and Filter Widget
|
||||||
|
|
||||||
class _SearchAndFilter extends StatelessWidget {
|
class _SearchAndFilter extends StatelessWidget {
|
||||||
final TextEditingController searchController;
|
final TextEditingController searchController;
|
||||||
final ValueChanged<String> onChanged;
|
final ValueChanged<String> onChanged;
|
||||||
final VoidCallback onFilterTap;
|
final VoidCallback onFilterTap;
|
||||||
|
final VoidCallback onRefreshTap;
|
||||||
|
|
||||||
const _SearchAndFilter({
|
const _SearchAndFilter({
|
||||||
required this.searchController,
|
required this.searchController,
|
||||||
required this.onChanged,
|
required this.onChanged,
|
||||||
required this.onFilterTap,
|
required this.onFilterTap,
|
||||||
|
required this.onRefreshTap,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -260,6 +268,18 @@ class _SearchAndFilter extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
MySpacing.width(8),
|
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(
|
IconButton(
|
||||||
icon: const Icon(Icons.tune, color: Colors.black),
|
icon: const Icon(Icons.tune, color: Colors.black),
|
||||||
onPressed: null, // Disabled as per request
|
onPressed: null, // Disabled as per request
|
||||||
@ -401,7 +421,6 @@ class _ExpenseList extends StatelessWidget {
|
|||||||
children: [
|
children: [
|
||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
|
|
||||||
MyText.bodyMedium(
|
MyText.bodyMedium(
|
||||||
expense.expensesType.name,
|
expense.expensesType.name,
|
||||||
fontWeight: 700,
|
fontWeight: 700,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user