Realizar una barra de búsqueda e ir filtrando una lista, es muy sencillo siguiendo los siguientes pasos:
La lista de elementos que vamos a mostrar y filtrar es la siguiente
List<dynamic> datosTutores = [
{
"name": "Maria",
"email": "ejemplo1_devcodelight@email.com",
"phone": "1234567890"
},
{
"name": "Laura",
"email": "ejemplo2_devcodelight@email.com",
"phone": "1234567890"
},
{
"name": "Isma",
"email": "ejemplo3_devcodelight@email.com",
"phone": "1234567890"
},
];
List<dynamic> listaFiltrar = [];
TextEditingController _controller = TextEditingController();
A continuacón hay que crear el diseño de la barra de búsqueda.
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: (texto) {
filtrarLista(texto); // Llama a la función de filtrado cuando el texto cambia
},
)
Por último agregamos el método que realizar el filtro en este caso se llama filtrarLista.
void filtrarLista(String texto) {
setState(() {
datosTutores = listaFiltrar
.where((tutor) => tutor['name']
.toString()
.toLowerCase()
.contains(texto.toLowerCase()))
.toList();
});
}
Espero que les sirva de ayuda, feliz día.
