Code Formatted
This commit is contained in:
@@ -15,10 +15,12 @@ class ATMLocatorScreen extends StatefulWidget {
|
||||
|
||||
class _ATMLocatorScreenState extends State<ATMLocatorScreen> {
|
||||
final TextEditingController _searchController = TextEditingController();
|
||||
var service = getIt<BranchService>(); // Added: Instance of BranchService for API calls
|
||||
var service =
|
||||
getIt<BranchService>(); // Added: Instance of BranchService for API calls
|
||||
bool _isLoading = true; // State variable to manage loading status
|
||||
List<Atm> _allAtms = []; // Changed: List to hold all fetched Atm objects
|
||||
List<Atm> _filteredAtms = []; // Changed: List to hold filtered Atm objects for display
|
||||
List<Atm> _filteredAtms =
|
||||
[]; // Changed: List to hold filtered Atm objects for display
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -28,7 +30,8 @@ class _ATMLocatorScreenState extends State<ATMLocatorScreen> {
|
||||
|
||||
/// Fetches the list of ATMs from the API using BranchService.
|
||||
Future<void> _loadAtms() async {
|
||||
final data = await service.fetchAtmList(); // Call the new fetchAtmList method
|
||||
final data =
|
||||
await service.fetchAtmList(); // Call the new fetchAtmList method
|
||||
setState(() {
|
||||
_allAtms = data; // Update the list of all ATMs
|
||||
_filteredAtms = data; // Initialize filtered list with all ATMs
|
||||
@@ -37,14 +40,18 @@ class _ATMLocatorScreenState extends State<ATMLocatorScreen> {
|
||||
}
|
||||
|
||||
/// Filters the list of ATMs based on the search query.
|
||||
void _filterAtms(String query) { // Changed: Renamed from _filterLocations
|
||||
void _filterAtms(String query) {
|
||||
// Changed: Renamed from _filterLocations
|
||||
setState(() {
|
||||
if (query.isEmpty) {
|
||||
_filteredAtms = _allAtms; // If query is empty, show all ATMs
|
||||
} else {
|
||||
_filteredAtms = _allAtms.where((atm) { // Changed: Filter based on Atm object
|
||||
_filteredAtms = _allAtms.where((atm) {
|
||||
// Changed: Filter based on Atm object
|
||||
final lowerQuery = query.toLowerCase();
|
||||
return atm.name.toLowerCase().contains(lowerQuery); // Filter by atm.name
|
||||
return atm.name
|
||||
.toLowerCase()
|
||||
.contains(lowerQuery); // Filter by atm.name
|
||||
}).toList();
|
||||
}
|
||||
});
|
||||
@@ -64,7 +71,8 @@ class _ATMLocatorScreenState extends State<ATMLocatorScreen> {
|
||||
padding: const EdgeInsets.all(12.0),
|
||||
child: TextField(
|
||||
controller: _searchController,
|
||||
onChanged: _filterAtms, // Updated: Call _filterAtms on text change
|
||||
onChanged:
|
||||
_filterAtms, // Updated: Call _filterAtms on text change
|
||||
decoration: InputDecoration(
|
||||
hintText: "Name/Address", // Hint text for the search bar
|
||||
prefixIcon: const Icon(Icons.search), // Search icon
|
||||
@@ -81,12 +89,16 @@ class _ATMLocatorScreenState extends State<ATMLocatorScreen> {
|
||||
? _buildShimmerList() // Display shimmer while loading
|
||||
: _filteredAtms.isEmpty
|
||||
? const Center(
|
||||
child: Text("No matching ATMs found")) // Message if no ATMs found
|
||||
child: Text(
|
||||
"No matching ATMs found")) // Message if no ATMs found
|
||||
: ListView.builder(
|
||||
itemCount: _filteredAtms.length, // Number of items in the filtered list
|
||||
itemCount: _filteredAtms
|
||||
.length, // Number of items in the filtered list
|
||||
itemBuilder: (context, index) {
|
||||
final atm = _filteredAtms[index]; // Get the current Atm object
|
||||
return _buildAtmItem(atm); // Build the ATM list item
|
||||
final atm = _filteredAtms[
|
||||
index]; // Get the current Atm object
|
||||
return _buildAtmItem(
|
||||
atm); // Build the ATM list item
|
||||
},
|
||||
),
|
||||
),
|
||||
@@ -111,9 +123,9 @@ class _ATMLocatorScreenState extends State<ATMLocatorScreen> {
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/// Helper widget to build a single ATM list item.
|
||||
Widget _buildAtmItem(Atm atm) { // Changed: Takes an Atm object
|
||||
Widget _buildAtmItem(Atm atm) {
|
||||
// Changed: Takes an Atm object
|
||||
return Card(
|
||||
margin: const EdgeInsets.symmetric(horizontal: 12, vertical: 6),
|
||||
child: ListTile(
|
||||
|
||||
Reference in New Issue
Block a user