splitTypes function
Implementation
List<String> splitTypes(String typesStr) {
if(typesStr.isEmpty) {
return [];
}
var currentStart = 0;
List<String> subTypes = [];
List<String> parentheses = [];
for(var i = 0; i < typesStr.length; i++) {
var c = typesStr[i];
switch(c) {
case '(':
case '[':
parentheses.add(c);
break;
case ')':
var pop = parentheses.removeLast();
assert(pop == '(');
break;
case ']':
var pop = parentheses.removeLast();
assert(pop == '[');
break;
case ',':
if(parentheses.isEmpty) {
subTypes.add(typesStr.substring(currentStart, i));
currentStart = i + 1;
}
break;
}
}
if(currentStart < typesStr.length) {
subTypes.add(typesStr.substring(currentStart));
}
return subTypes;
}