onMarkup method
Implementation
@override
HypertextSpan onMarkup(List<HypertextSpan>? children, MarkupContext ctx) {
if (children.isEmpty) return kEmptyHypertextSpan;
// 对于[children]只有一个[InheritedTextSpan]的情况,减少Widget嵌套将内容重新包装
if (_canLift(children, ctx)) return _doLift(children!.first, ctx);
final onLongPress = _enableLongPress(ctx)
? () => ctx.fireEvent(MarkupLongPressEvent.from(ctx))
: null;
final onTap = _enableTap(ctx) || onLongPress == null
? () => ctx.fireEvent(MarkupTapEvent.from(ctx))
: null;
final title = ctx.get('title');
final cursor = _getCursor(ctx);
final alignment = ctx.switchT(ctx.get('alignment'), mpPLAlignment);
final baseline = ctx.switchT(ctx.get('baseline'), mpBaselines);
final effectiveAlignment =
alignment ?? this.alignment ?? PlaceholderAlignment.baseline;
final effectiveBaseline = baseline ??
this.baseline ??
(this.alignment == null ? TextBaseline.alphabetic : null);
Widget child = GestureDetector(
onTap: onTap,
onLongPress: onLongPress,
child: Text.rich(HypertextTextSpan(children: children, style: style)),
);
if (title != null) {
child = Tooltip(message: title, child: child);
}
if (cursor != null) {
child = MouseRegion(cursor: cursor, child: child);
}
return HypertextWidgetSpan(
alignment: effectiveAlignment,
baseline: effectiveBaseline,
child: child,
);
}