Ordina un elenco di oggetti in base al valore bool [duplicato]

Aug 21 2020

Chiamando il mio servizio ho ricevuto un elenco di oggetti. questo è il mio schema oggetto:

class MyCard {
  final String number;
  final String name;
  final String available;
  final bool isOwn;

  const MyCard({
    @required this.number,
    @required this.name,
    @required this.available,
    @required this.isOwn,
  });
}

Voglio ordinare la mia lista in base a isOwn == true. Quindi, per utilizzare list.sort:

myCards.sort((a, b) => a.isOwn - b.isOwn);

Questa sintassi non è per dart !! come posso fare con il flutter?

Risposte

1 sayreskabir Aug 21 2020 at 19:03

Secondo questa risposta ho ottenuto il risultato giusto :

Puoi definire la tua funzione di confronto per bool e passarla al metodo di ordinamento di List.

Esempio con booleani come elenco bool:

booleans.sort((a, b) {
  if(b) {
    return 1;
  }
  return -1;
});

Questo esempio indica al metodo di ordinamento che gli elementi veri dovrebbero essere ordinati più in alto degli elementi falsi.

AlperenEkin Aug 21 2020 at 19:12

Penso che tu possa implementare Comparable dalla classe MyCard e sovrascrivere il metodo compareTo di cui hai bisogno e usarlo.
Puoi dare un'occhiata a quell'esempio.
https://www.woolha.com/tutorials/dart-sorting-list-with-comparator-and-comparable