Ich habe mich gefragt, ob es eine einfache Möglichkeit gibt, zwei Listen in Dart zu verketten, um ein brandneues Listenobjekt zu erstellen. Ich konnte nichts und so etwas finden:
Meine Liste:
list1 = [1, 2, 3]
list2 = [4, 5, 6]
Ich habe es versucht:
var newList = list1 + list2;
Ich wollte die kombinierte Ausgabe von:
[1, 2, 3, 4, 5, 6]
[list1, list2, list3, ...].expand((x) => x).toList()
;+
Operator nicht für Listen unterschiedlicher Typen verwendet werden kann. (In diesem Fall erhalten Sie einen Fehler wietype 'List<Widget>' is not a subtype of type 'List<Image>'
.). Der Spread-Operator eignet sich jedoch hervorragend für diesen Anwendungsfall.vielleicht konsequenter ~
var list = []..addAll(list1)..addAll(list2);
quelle
..addAll()
Grund warum nicht nur ein einziger Punkt?Die Antwort von Alexandres ist die beste, aber wenn Sie + wie in Ihrem Beispiel verwenden möchten, können Sie die Überladung des Darts-Operators verwenden:
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 } }
Dann:
var newMyList = myList1 + myList2;
Ist gültig :)
quelle
Dart unterstützt jetzt die Verkettung von Listen mit dem
+
Operator.Beispiel:
List<int> result = [0, 1, 2] + [3, 4, 5];
quelle
Wenn Sie zwei Listen zusammenführen und Duplikate entfernen möchten, können Sie Folgendes tun:
var newList = [...list1, ...list2].toSet().toList();
quelle
Wir können alle Elemente der anderen Liste mithilfe der
addAll()
Methode zur vorhandenen Liste hinzufügen .Verwenden der
addAll()
Methode, um alle Elemente einer anderen Liste zur vorhandenen Liste hinzuzufügen. und Hängt alle iterierbaren Objekte an das Ende dieser Liste an.Erweitert die Länge der Liste um die Anzahl der iterierbaren Objekte. Wirft ein,
UnsupportedError
wenn diese Liste eine feste Länge hat.Listen erstellen
listone = [1,2,3] listtwo = [4,5,6]
Listen kombinieren
Ausgabe:
[1,2,3,4,5,6]
quelle