getLibriFiltrati method
- GenereLibro? genere,
- StatoLibro? stato,
- bool soloPreferiti = false,
- String? titolo,
Metodo helper per il filtraggio combinato dei libri. Permette di filtrare per genere, stato, preferiti e titolo contemporaneamente.
Implementation
List<Libro> getLibriFiltrati({
GenereLibro? genere,
StatoLibro? stato,
bool soloPreferiti = false,
String? titolo,
}) {
final filtrati = cerca((libro) {
// Il metodo cerca() prende in input una Function (una funzione di filtraggio) che restituisce un bool
//
final genereOk = genere == null || libro.genere == genere;
final statoOk = stato == null || libro.stato == stato;
final preferitiOk = !soloPreferiti || libro.preferito;
final titoloOk =
titolo == null ||
libro.titolo.toLowerCase().contains(titolo.toLowerCase());
return genereOk && statoOk && preferitiOk && titoloOk;
});
// Ordino i risultati per titolo
filtrati.sort((libro1, libro2) => libro1.titolo.toLowerCase().compareTo(libro2.titolo.toLowerCase()));
return filtrati;
}