resolvePositionGestureDetails function
CursorOffset?
resolvePositionGestureDetails(
- PositionedGestureDetails details,
- BuildContext context,
- Widget widget
Implementation
CursorOffset? resolvePositionGestureDetails(PositionedGestureDetails details, BuildContext context, Widget widget) {
final renderBox = context.findRenderObject() as RenderBox;
final result = BoxHitTestResult();
final localPosition = renderBox.globalToLocal(details.globalPosition);
renderBox.hitTest(result, position: localPosition);
//Search for RenderFluentParagraph first
RenderFluentParagraph? foundParagraph;
for (final entry in result.path) {
if (entry.target is RenderFluentParagraph) {
foundParagraph = entry.target as RenderFluentParagraph;
final fragmentResult = foundParagraph.getFragmentAtPosition(localPosition);
if (fragmentResult != null) {
return CursorOffset(
id: fragmentResult.fragmentId,
offset: fragmentResult.localOffset,
);
}
}
}
// Fallback: old method with RenderFluentFragment
for (final entry in result.path) {
if (entry.target is RenderFluentFragment) {
if ((entry.target as RenderFluentFragment).node is! InlineContainerNode) {
return detectOffsetOnRenderFluentFragment(entry.target as RenderFluentFragment, renderBox, localPosition, context, widget);
}
}
}
return null;
}