la solution avec méthode d'expansion correspond bien pour satisfaire ce cas:
expect(ListTools.getFlatList([[1],["hello",2],["test"]]),orderedEquals([1,"hello",2,"test"]));
Mais pas pour les thèses
expect(ListTools.getFlatList([[1],["hello",2,["foo",5]],["test"]]),orderedEquals([1,"hello",2,"foo",5,"test"]));
expect(ListTools.getFlatList([1,["hello",2],"test"]),orderedEquals([1,"hello",2,"test"]));
Pour satisfaire les cas de test des thèses, vous avez besoin comme quelque chose de plus récursive la fonction suivante:
List getFlatList(List list) {
List internalList = new List();
list.forEach((e) {
if (e is List) {
internalList.addAll(getFlatList(e));
} else {
internalList.add(e);
}
});
return internalList;
}
Meilleures salutations,
Sébastien
de Nice! Je pense que quelqu'un devrait faire une liste des grands trucs communs dans Dart. –
Recette géniale pour @shailentuli à ajouter. –
Pour gérer plus niveaux d'imbrication, je fais ceci: Iterable aplatissent (Iterable itérables) => iterable.expand ((e) => e est la liste aplatir (e): [e]); –