import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:cpd_ss23/Widgets/all_companies_widget.dart'; import 'package:cpd_ss23/Widgets/bottom_nav_bar.dart'; import 'package:flutter/material.dart'; class AllWorkersScreen extends StatefulWidget { @override State createState() => _AllWorkersScreenState(); } class _AllWorkersScreenState extends State { final TextEditingController _searchQueryController = TextEditingController(); String searchQuery = 'Search Query'; Widget _buildSearchField() { return TextField( controller: _searchQueryController, autocorrect: true, decoration: const InputDecoration( hintText: "Search for companies...", border: InputBorder.none, hintStyle: TextStyle(color: Colors.white), ), style: const TextStyle(color: Colors.white, fontSize: 16.0), onChanged: (query) => updateSearchQuery(query), ); } List _buildActions() { return [ IconButton( icon: const Icon(Icons.clear), onPressed: () { _clearSearchQuery(); }, ) ]; } void _clearSearchQuery() { setState(() { _searchQueryController.clear(); updateSearchQuery(""); }); } void updateSearchQuery(String newQuery) { setState(() { searchQuery = newQuery; print(searchQuery); }); } @override Widget build(BuildContext context) { return Container( decoration: const BoxDecoration( gradient: LinearGradient( colors: [Colors.cyan, Colors.white60], begin: Alignment.centerLeft, end: Alignment.centerRight, stops: [0.2, 0.9], ) ), child: Scaffold( bottomNavigationBar: BottomNavigationBarForApp( indexNum: 1, ), backgroundColor: Colors.transparent, appBar: AppBar( backgroundColor: Colors.cyan, automaticallyImplyLeading: false, title: _buildSearchField(), actions: _buildActions(), ), body: StreamBuilder( stream: FirebaseFirestore.instance .collection("users") .where("name", isGreaterThanOrEqualTo: searchQuery) .snapshots(), builder: (context, AsyncSnapshot snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return const Center( child: CircularProgressIndicator(), ); } else if (snapshot.connectionState == ConnectionState.active) { if (snapshot.data!.docs.isNotEmpty) { return ListView.builder( itemCount: snapshot.data!.docs.length, itemBuilder: (BuildContext context, int index) { return AllWorkersWidget( userID: snapshot.data!.docs[index]["id"], userName: snapshot.data!.docs[index]["name"], userEmail: snapshot.data!.docs[index]["email"], phoneNumber: snapshot.data!.docs[index]["phone"], userImageUrl: snapshot.data!.docs[index]["userImage"], ); }); } else { return const Center( child: Text("There is no user."), ); } } return const Center( child: Text( "Something went wrong", style: TextStyle(fontWeight: FontWeight.bold, fontSize: 30), ), ); }, ), ), ); } }