Search Bar and Filter in Flutter Dart

Tiempo de lectura: < 1 minuto

Reading Time: < 1 minute

To create a search bar and filter a list, follow these simple steps:

The list of elements we will display and filter is as follows:

List<dynamic> tutorsData = [
  {
    "name": "Maria",
    "email": "example1_devcodelight@email.com",
    "phone": "1234567890"
  },
  {
    "name": "Laura",
    "email": "example2_devcodelight@email.com",
    "phone": "1234567890"
  },
  {
    "name": "Isma",
    "email": "example3_devcodelight@email.com",
    "phone": "1234567890"
  },
];

List<dynamic> filteredList = [];
TextEditingController _controller = TextEditingController();

Next, you need to create the design for the search bar:

TextField(
  controller: _controller,
  cursorColor: Colors.black,
  decoration: InputDecoration(
    prefixIcon: Icon(
      CupertinoIcons.search,
      color: Colors.black,
    ),
    border: InputBorder.none,
    hintText: Traducir.of(context)!.translate('buscar'),
  ),
  onChanged: (text) {
    filterList(text); // Call the filtering function when the text changes
  },
)

Finally, add the method that performs the filtering, in this case, it is called filterList:

void filterList(String text) {
  setState(() {
    tutorsData = filteredList
        .where((tutor) => tutor['name']
            .toString()
            .toLowerCase()
            .contains(text.toLowerCase()))
        .toList();
  });
}

I hope this helps. Have a great day.

Leave a Comment