171: support for non-scrollable text editor

pull/188/head
Gyuri Majercsik 4 years ago
parent 387669e3ff
commit b6eea2e442
  1. 1
      lib/widgets/editor.dart
  2. 33
      lib/widgets/raw_editor.dart

@ -1073,7 +1073,6 @@ class RenderEditableContainerBox extends RenderBox
@override @override
void performLayout() { void performLayout() {
assert(!constraints.hasBoundedHeight);
assert(constraints.hasBoundedWidth); assert(constraints.hasBoundedWidth);
_resolvePadding(); _resolvePadding();
assert(_resolvedPadding != null); assert(_resolvedPadding != null);

@ -994,25 +994,28 @@ class RawEditorState extends EditorState
_showCaretOnScreenScheduled = true; _showCaretOnScreenScheduled = true;
SchedulerBinding.instance!.addPostFrameCallback((_) { SchedulerBinding.instance!.addPostFrameCallback((_) {
_showCaretOnScreenScheduled = false; if (widget.scrollable) {
_showCaretOnScreenScheduled = false;
final viewport = RenderAbstractViewport.of(getRenderEditor())!; final viewport = RenderAbstractViewport.of(getRenderEditor());
final editorOffset = getRenderEditor()!
.localToGlobal(const Offset(0, 0), ancestor: viewport);
final offsetInViewport = _scrollController!.offset + editorOffset.dy;
final offset = getRenderEditor()!.getOffsetToRevealCursor( final editorOffset = getRenderEditor()!
_scrollController!.position.viewportDimension, .localToGlobal(const Offset(0, 0), ancestor: viewport);
_scrollController!.offset, final offsetInViewport = _scrollController!.offset + editorOffset.dy;
offsetInViewport,
);
if (offset != null) { final offset = getRenderEditor()!.getOffsetToRevealCursor(
_scrollController!.animateTo( _scrollController!.position.viewportDimension,
offset, _scrollController!.offset,
duration: const Duration(milliseconds: 100), offsetInViewport,
curve: Curves.fastOutSlowIn,
); );
if (offset != null) {
_scrollController!.animateTo(
offset,
duration: const Duration(milliseconds: 100),
curve: Curves.fastOutSlowIn,
);
}
} }
}); });
} }

Loading…
Cancel
Save