web-dev-qa-db-fra.com

Existe-t-il un moyen simple de combiner deux listes dans Dart?

Je me demandais s'il y avait un moyen facile de combiner deux listes dans Dart pour créer un nouvel objet liste. Je n'ai rien trouvé et quelque chose comme ça:

var newList = list1 + list2;

N'est pas valide.

46
Alex

Vous pouvez utiliser:

var newList = new List.from(list1)..addAll(list2);

Si vous avez plusieurs listes, vous pouvez utiliser:

var newList = [list1, list2, list3].expand((x) => x).toList()

Depuis Dart 2, vous pouvez désormais utiliser +:

var newList = list1 + list2 + list3;

Depuis Dart 2.3, vous pouvez utiliser l'opérateur d'étalement:

var newList = [...list1, ...list2, ...list3];
117
Alexandre Ardhuin

peut-être plus cohérent ~

var list = []..addAll(list1)..addAll(list2);
14
Ticore Shih

La réponse d'Alexandres est la meilleure mais si vous vouliez utiliser + comme dans votre exemple, vous pouvez utiliser la surcharge de l'opérateur Darts:

class MyList<T>{
  List<T> _internal = new List<T>();
  operator +(other) => new List<T>.from(_internal)..addAll(other);
  noSuchMethod(inv){
    //pass all calls to _internal
  }
}

Ensuite:

var newMyList = myList1 + myList2;

Est valable :)

9
Daniel Robinson

Si vous souhaitez fusionner deux listes et supprimer les doublons, vous pouvez:

var newList = [...list1, ...list2].toSet().toList(); 
2
Nuts

Dart now supporte concaténation des listes en utilisant le + opérateur.

Exemple:

List<int> result = [0, 1, 2] + [3, 4, 5];
2
Erlend