diff --git a/frontend/mobile-app/lib/features/trading/presentation/pages/ledger_detail_page.dart b/frontend/mobile-app/lib/features/trading/presentation/pages/ledger_detail_page.dart index 328351f8..d39481e5 100644 --- a/frontend/mobile-app/lib/features/trading/presentation/pages/ledger_detail_page.dart +++ b/frontend/mobile-app/lib/features/trading/presentation/pages/ledger_detail_page.dart @@ -15,6 +15,7 @@ class LedgerDetailPage extends ConsumerStatefulWidget { class _LedgerDetailPageState extends ConsumerState with SingleTickerProviderStateMixin { late TabController _tabController; + late ScrollController _filterScrollController; // 数据状态 bool _isLoading = true; @@ -25,6 +26,7 @@ class _LedgerDetailPageState extends ConsumerState // 筛选条件 String? _selectedEntryType; + int _selectedFilterIndex = 0; int _currentPage = 1; static const int _pageSize = 20; @@ -45,12 +47,14 @@ class _LedgerDetailPageState extends ConsumerState void initState() { super.initState(); _tabController = TabController(length: 2, vsync: this); + _filterScrollController = ScrollController(); _loadData(); } @override void dispose() { _tabController.dispose(); + _filterScrollController.dispose(); super.dispose(); } @@ -125,9 +129,10 @@ class _LedgerDetailPageState extends ConsumerState } /// 筛选流水类型 - Future _filterByEntryType(String? entryType) async { + Future _filterByEntryType(String? entryType, int index) async { setState(() { _selectedEntryType = entryType?.isEmpty == true ? null : entryType; + _selectedFilterIndex = index; _currentPage = 1; _isLoading = true; }); @@ -771,15 +776,16 @@ class _LedgerDetailPageState extends ConsumerState height: 44, margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), child: ListView.builder( + controller: _filterScrollController, scrollDirection: Axis.horizontal, itemCount: _entryTypes.length, itemBuilder: (context, index) { final type = _entryTypes[index]; - final isSelected = (_selectedEntryType ?? '') == type['value']; + final isSelected = _selectedFilterIndex == index; return Padding( padding: const EdgeInsets.only(right: 8), child: GestureDetector( - onTap: () => _filterByEntryType(type['value']), + onTap: () => _filterByEntryType(type['value'], index), child: Container( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), decoration: BoxDecoration(