void main() { var thing = ['a:b', 'c:d:e']; var subaccounts = Set(); for (var t in thing) { while (t.lastIndexOf(':') != -1) { t = t.substring(0, t.lastIndexOf(':')); subaccounts.add(t); } } print(thing.toSet().union(subaccounts).toList()..sort()); }