getHashTagTextSpan function
Returns textSpan with decorated tagged text
Used in HashTagText
Implementation
TextSpan getHashTagTextSpan({
required TextStyle decoratedStyle,
required TextStyle basicStyle,
required String source,
Function(String)? onTap,
bool decorateAtSign = false,
}) {
final decorations = Detector(
decoratedStyle: decoratedStyle,
textStyle: basicStyle,
decorateAtSign: decorateAtSign)
.getDetections(source);
if (decorations.isEmpty) {
return TextSpan(text: source, style: basicStyle);
} else {
decorations.sort();
final span = decorations
.asMap()
.map(
(index, item) {
final recognizer = TapGestureRecognizer()
..onTap = () {
final decoration = decorations[index];
if (decoration.style == decoratedStyle) {
onTap!(decoration.range.textInside(source).trim());
}
};
return MapEntry(
index,
TextSpan(
style: item.style,
text: item.range.textInside(source),
recognizer: (onTap == null) ? null : recognizer,
),
);
},
)
.values
.toList();
return TextSpan(children: span);
}
}