static int findEnd(String string, int start) { int index = string.indexOf(">", start); if (index == -1) { return string.length -1; } else { return index; } } static List parseHtml(String html) { List parts = []; int pos = 0; if (!html.contains(" tagStart) { String tag = html.substring(tagStart, tagEnd); int attrStart = tag.indexOf("href"); if (attrStart > 0) { int valueStart = tag.indexOf("\"") + 1; int valueEnd = tag.indexOf("\"", valueStart); String target = tag.substring(valueStart, valueEnd); int close = html.indexOf("", pos); if (close == -1) throw Exception(" expected"); parts.add(TextSpan( text: html.substring(tagEnd, close), style: linkStyle, recognizer: TapGestureRecognizer() ..onTap = () { print('Click on ' + target); }, )); pos = close + 4; } } } } while (pos < html.length); } return parts; }