Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

When I want to search, only the first letters of each name appear to me

When I want to search, only the first letters of each name appear to me. For example, if I type the letter A, I do not see all the names that contain this letter. I do not want only the beginning of the name.

The project has connect with the firebase.

this when I try to search
enter image description here

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

enter image description here




class _ListServicesState extends State<ListServices> {
  var searchText = '';
  @override
  Widget build(BuildContext context) {
    final ref = FirebaseFirestore.instance.collection('Services');
    Query<Map<String, dynamic>> query;
    query = ref.orderBy('title').startAt(
      [searchText],
    ).endAt([searchText + '\uf8ff']);
    return Scaffold(
      appBar: AppBar(
        title: TextField(
            decoration: const InputDecoration(
              iconColor: Color.fromARGB(255, 124, 43, 43),
              hintText: 'Search...',
              suffixIcon: Icon(Icons.search),
            ),
            onChanged: (String value) {
              setState(() {
                searchText = value;
              });
            }),
        centerTitle: true,
      ),
      body: StreamBuilder(
        stream: query.snapshots(),
        builder: (_, AsyncSnapshot<QuerySnapshot> snapshot) {
          if (snapshot.connectionState == ConnectionState.waiting) {
            return const Center(
              child: CircularProgressIndicator(),
            ); }
          
          if (snapshot.data!.docs.isEmpty) {
            return const Center(
              child: Text('No data to be displayed.'),
            );
          }
          var Services = snapshot.data!.docs;
          return ListView.builder(
            itemCount: Services.length,
            itemBuilder: (ctx, index) {
              final Service = Services[index].data() as Map<String, dynamic>;
              final ServiceId = Services[index].id;
              return Column(
                children: [
                  ListTile(
                    title: Text(Service['title']),
                    subtitle: Text(Service['price']),
                    trailing: IconButton(
                      icon: Icon(
                        Icons.delete,
                        color: Color.fromARGB(255, 184, 16, 16),),
                      onPressed: () async {
                        await FirebaseFirestore.instance
                            .collection('Services')
                            .doc(ServiceId)
                            .delete(); }, ),
                  

>Solution :

Try the following code:

class _ListServicesState extends State<ListServices> {
  var searchText = '';
  @override
  Widget build(BuildContext context) {
    final ref = FirebaseFirestore.instance.collection('Services');
    Query<Map<String, dynamic>> query;
    query = ref.orderBy('title');
    return Scaffold(
      appBar: AppBar(
        title: TextField(
            decoration: const InputDecoration(
              iconColor: Color.fromARGB(255, 124, 43, 43),
              hintText: 'Search...',
              suffixIcon: Icon(Icons.search),
            ),
            onChanged: (String value) {
              setState(() {
                searchText = value;
              });
            }),
        centerTitle: true,
      ),
      body: StreamBuilder(
        stream: query.snapshots(),
        builder: (_, AsyncSnapshot<QuerySnapshot> snapshot) {
          final List Services = snapshot.data!.docs;
          Services.removeWhere((element) {
            final Map<String, dynamic> _element = element.data() as Map<String, dynamic>;
            return _element['title'].contains(searchText) == false;
          });
          if (snapshot.connectionState == ConnectionState.waiting) {
            return const Center(
              child: CircularProgressIndicator(),
            ); }
          
          if (Services.isEmpty) {
            return const Center(
              child: Text('No data to be displayed.'),
            );
          }
          return ListView.builder(
            itemCount: Services.length,
            itemBuilder: (ctx, index) {
              final Service = Services[index].data() as Map<String, dynamic>;
              final ServiceId = Services[index].id;
              return Column(
                children: [
                  ListTile(
                    title: Text(Service['title']),
                    subtitle: Text(Service['price']),
                    trailing: IconButton(
                      icon: Icon(
                        Icons.delete,
                        color: Color.fromARGB(255, 184, 16, 16),),
                      onPressed: () async {
                        await FirebaseFirestore.instance
                            .collection('Services')
                            .doc(ServiceId)
                            .delete(); }, ),
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading