getLibriFiltrati method

List<Libro> getLibriFiltrati({
  1. GenereLibro? genere,
  2. StatoLibro? stato,
  3. bool soloPreferiti = false,
  4. 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;
}