getTextRect method
Rect
getTextRect(
- TextSelection selection,
- TextOverflowPosition position, {
- Offset? effectiveOffset,
- Rect caretPrototype = Rect.zero,
Implementation
Rect getTextRect(
TextSelection selection,
TextOverflowPosition position, {
Offset? effectiveOffset,
Rect caretPrototype = Rect.zero,
}) {
effectiveOffset ??= Offset.zero;
final List<TextBox> boxs = textPainter.getBoxesForSelection(
selection,
boxWidthStyle: selectionWidthStyle,
boxHeightStyle: selectionHeightStyle,
);
if (boxs.isNotEmpty) {
Rect? rect;
for (final TextBox box in boxs) {
final Rect boxRect = box.toRect();
if (rect == null) {
rect = boxRect;
} else
// if (rect.overlaps(boxRect))
{
rect = rect.expandToInclude(boxRect);
}
// line breaking
//else {
// break;
// }
}
return rect!.shift(effectiveOffset);
} else {
Rect? rect;
for (int i = selection.baseOffset; i <= selection.extentOffset; i++) {
final TextPosition textPosition = TextPosition(offset: i);
final Offset offset =
textPainter.getOffsetForCaret(textPosition, Rect.zero);
final double? height =
textPainter.getFullHeightForCaret(textPosition, caretPrototype);
//assert(height != null, 'can\' find selection');
if (rect == null) {
rect = Rect.fromLTWH(offset.dx, offset.dy, 1, height ?? 0);
} else {
rect = rect.expandToInclude(
Rect.fromLTWH(offset.dx, offset.dy, 1, height ?? 0));
}
}
return rect!;
}
}