Aidra Connect 10.0.2+16
Aidra Connect Mobile Application
Loading...
Searching...
No Matches
transactions_history_screen.dart
Go to the documentation of this file.
1import 'package:connect/core/localization/app_localizations.dart';
2
3import '/core/ui/widgets/custom_scaffold.dart';
4import '/core/ui/widgets/custom_tabs.dart';
5import '/features/collections/presentation/logic/collection_requests_history_bloc/collection_requests_history_bloc.dart';
6import '/features/collections/presentation/screens/transaction_history_screen/views/competed_transactions_view/completed_transactions_view.dart';
7import '/features/collections/presentation/screens/transaction_history_screen/views/pending_transactions_view/pending_transactions_view.dart';
8import 'package:flutter/material.dart';
9import 'package:flutter_bloc/flutter_bloc.dart';
10
11class TransactionHistoryScreen extends StatefulWidget {
12 const TransactionHistoryScreen({super.key});
13
14 @override
15 TransactionHistoryScreenState createState() =>
16 TransactionHistoryScreenState();
17}
18
19class TransactionHistoryScreenState extends State<TransactionHistoryScreen> {
20 final PageController _pageController = PageController();
22
23 void _onTabSelected(int index) {
24 setState(() {
25 _selectedIndex = index;
26 });
27 _pageController.animateToPage(
28 index,
29 duration: const Duration(milliseconds: 300),
30 curve: Curves.easeInOut,
31 );
32 }
33
34 @override
35 Widget build(BuildContext context) {
36 List<String> _tabs = [
37 AppLocalizations.of(context).translate('Pending'),
38 AppLocalizations.of(context).translate('Completed'),
39 ];
40 return BlocConsumer<CollectionRequestsHistoryBloc,
42 listenWhen: (previous, current) =>
43 current is OnGoingCollectionRequestsLoaded,
44 listener: (context, state) {
45 if (state is OnGoingCollectionRequestsLoaded &&
46 state.collections.isEmpty) {
47 setState(() {
48 _tabs = [
49 AppLocalizations.of(context).translate('Schedule a Collection'),
50 AppLocalizations.of(context).translate('Completed'),
51 ];
52 });
53 }
54 },
55 builder: (context, state) {
56 return CustomScaffold(
57 title: AppLocalizations.of(context)
58 .translate('COLLECTION REQUESTS & HISTORY'),
59 isLoading: state is LoadingOnGoingCollectionRequestsState ||
60 state is LoadingCompletedCollectionRequests,
61 body: Column(
62 children: [
63 CustomTabsBuilder(
64 selctedIndex: _selectedIndex,
65 tabs: _tabs,
66 onTapSelected: _onTabSelected,
67 ),
68 Expanded(
69 child: PageView(
70 physics: const NeverScrollableScrollPhysics(),
71 controller: _pageController,
72 onPageChanged: (index) {
73 setState(() {
74 _selectedIndex = index;
75 });
76 },
77 children: const [
79 CompletedTransactionsView(),
80 ],
81 ),
82 ),
83 ],
84 ),
85 );
86 },
87 );
88 }
89}
String translate(String key)
static AppLocalizations of(BuildContext context)
const TransactionHistoryScreen({super.key})
override TransactionHistoryScreenState createState()
final Widget child
class EnergyScreen extends StatefulWidget _pageController
class NavBarWrapper extends StatefulWidget _selectedIndex
override Widget build(BuildContext context)
const PendingTransactionsView({super.key})
final String title
void _onTabSelected(int index)