Update delegate EditorState? get editor

pull/587/head
X Code 3 years ago
parent aa9ce68605
commit 8bd15fe785
  1. 34
      lib/src/widgets/delegate.dart
  2. 71
      lib/src/widgets/editor.dart

@ -60,16 +60,12 @@ class EditorTextSelectionGestureDetectorBuilder {
/// The [State] of the [EditableText] for which the builder will provide a
/// [EditorTextSelectionGestureDetector].
@protected
EditorState? getEditor() {
return delegate.getEditableTextKey().currentState;
}
EditorState? get editor => delegate.getEditableTextKey().currentState;
/// The [RenderObject] of the [EditableText] for which the builder will
/// provide a [EditorTextSelectionGestureDetector].
@protected
RenderEditor? getRenderEditor() {
return getEditor()!.renderEditor;
}
RenderEditor? get renderEditor => editor?.renderEditor;
/// Handler for [EditorTextSelectionGestureDetector.onTapDown].
///
@ -83,7 +79,7 @@ class EditorTextSelectionGestureDetectorBuilder {
/// which triggers this callback.
@protected
void onTapDown(TapDownDetails details) {
getRenderEditor()!.handleTapDown(details);
renderEditor!.handleTapDown(details);
// The selection overlay should only be shown when the user is interacting
// through a touch screen (via either a finger or a stylus).
// A mouse shouldn't trigger the selection overlay.
@ -110,7 +106,7 @@ class EditorTextSelectionGestureDetectorBuilder {
assert(delegate.getForcePressEnabled());
shouldShowSelectionToolbar = true;
if (delegate.getSelectionEnabled()) {
getRenderEditor()!.selectWordsInRange(
renderEditor!.selectWordsInRange(
details.globalPosition,
null,
SelectionChangedCause.forcePress,
@ -132,13 +128,13 @@ class EditorTextSelectionGestureDetectorBuilder {
@protected
void onForcePressEnd(ForcePressDetails details) {
assert(delegate.getForcePressEnabled());
getRenderEditor()!.selectWordsInRange(
renderEditor!.selectWordsInRange(
details.globalPosition,
null,
SelectionChangedCause.forcePress,
);
if (shouldShowSelectionToolbar) {
getEditor()!.showToolbar();
editor!.showToolbar();
}
}
@ -153,7 +149,7 @@ class EditorTextSelectionGestureDetectorBuilder {
@protected
void onSingleTapUp(TapUpDetails details) {
if (delegate.getSelectionEnabled()) {
getRenderEditor()!.selectWordEdge(SelectionChangedCause.tap);
renderEditor!.selectWordEdge(SelectionChangedCause.tap);
}
}
@ -182,7 +178,7 @@ class EditorTextSelectionGestureDetectorBuilder {
@protected
void onSingleLongTapStart(LongPressStartDetails details) {
if (delegate.getSelectionEnabled()) {
getRenderEditor()!.selectPositionAt(
renderEditor!.selectPositionAt(
from: details.globalPosition,
cause: SelectionChangedCause.longPress,
);
@ -201,7 +197,7 @@ class EditorTextSelectionGestureDetectorBuilder {
@protected
void onSingleLongTapMoveUpdate(LongPressMoveUpdateDetails details) {
if (delegate.getSelectionEnabled()) {
getRenderEditor()!.selectPositionAt(
renderEditor!.selectPositionAt(
from: details.globalPosition,
cause: SelectionChangedCause.longPress,
);
@ -219,7 +215,7 @@ class EditorTextSelectionGestureDetectorBuilder {
@protected
void onSingleLongTapEnd(LongPressEndDetails details) {
if (shouldShowSelectionToolbar) {
getEditor()!.showToolbar();
editor!.showToolbar();
}
}
@ -235,9 +231,9 @@ class EditorTextSelectionGestureDetectorBuilder {
@protected
void onDoubleTapDown(TapDownDetails details) {
if (delegate.getSelectionEnabled()) {
getRenderEditor()!.selectWord(SelectionChangedCause.tap);
renderEditor!.selectWord(SelectionChangedCause.tap);
if (shouldShowSelectionToolbar) {
getEditor()!.showToolbar();
editor!.showToolbar();
}
}
}
@ -252,7 +248,7 @@ class EditorTextSelectionGestureDetectorBuilder {
/// which triggers this callback.
@protected
void onDragSelectionStart(DragStartDetails details) {
getRenderEditor()!.handleDragStart(details);
renderEditor!.handleDragStart(details);
}
/// Handler for [EditorTextSelectionGestureDetector.onDragSelectionUpdate].
@ -267,7 +263,7 @@ class EditorTextSelectionGestureDetectorBuilder {
@protected
void onDragSelectionUpdate(
DragStartDetails startDetails, DragUpdateDetails updateDetails) {
getRenderEditor()!.extendSelection(updateDetails.globalPosition,
renderEditor!.extendSelection(updateDetails.globalPosition,
cause: SelectionChangedCause.drag);
}
@ -281,7 +277,7 @@ class EditorTextSelectionGestureDetectorBuilder {
/// which triggers this callback.
@protected
void onDragSelectionEnd(DragEndDetails details) {
getRenderEditor()!.handleDragEnd(details);
renderEditor!.handleDragEnd(details);
}
/// Returns a [EditorTextSelectionGestureDetector] configured with

@ -599,7 +599,7 @@ class _QuillEditorSelectionGestureDetectorBuilder
void onForcePressStart(ForcePressDetails details) {
super.onForcePressStart(details);
if (delegate.getSelectionEnabled() && shouldShowSelectionToolbar) {
getEditor()!.showToolbar();
editor!.showToolbar();
}
}
@ -609,12 +609,10 @@ class _QuillEditorSelectionGestureDetectorBuilder
@override
void onSingleLongTapMoveUpdate(LongPressMoveUpdateDetails details) {
if (_state.widget.onSingleLongTapMoveUpdate != null) {
final renderEditor = getRenderEditor();
if (renderEditor != null) {
if (_state.widget.onSingleLongTapMoveUpdate!(
details, renderEditor.getPositionForOffset)) {
return;
}
if (renderEditor != null &&
_state.widget.onSingleLongTapMoveUpdate!(
details, renderEditor!.getPositionForOffset)) {
return;
}
}
if (!delegate.getSelectionEnabled()) {
@ -623,7 +621,7 @@ class _QuillEditorSelectionGestureDetectorBuilder
switch (Theme.of(_state.context).platform) {
case TargetPlatform.iOS:
case TargetPlatform.macOS:
getRenderEditor()!.selectPositionAt(
renderEditor!.selectPositionAt(
from: details.globalPosition,
cause: SelectionChangedCause.longPress,
);
@ -632,7 +630,7 @@ class _QuillEditorSelectionGestureDetectorBuilder
case TargetPlatform.fuchsia:
case TargetPlatform.linux:
case TargetPlatform.windows:
getRenderEditor()!.selectWordsInRange(
renderEditor!.selectWordsInRange(
details.globalPosition - details.offsetFromOrigin,
details.globalPosition,
SelectionChangedCause.longPress,
@ -647,16 +645,15 @@ class _QuillEditorSelectionGestureDetectorBuilder
if (_state.widget.controller.document.isEmpty()) {
return false;
}
final pos = getRenderEditor()!.getPositionForOffset(details.globalPosition);
final result =
getEditor()!.widget.controller.document.queryChild(pos.offset);
final pos = renderEditor!.getPositionForOffset(details.globalPosition);
final result = editor!.widget.controller.document.queryChild(pos.offset);
if (result.node == null) {
return false;
}
final line = result.node as Line;
final segmentResult = line.queryChild(result.offset, false);
if (segmentResult.node == null && line.length == 1) {
getEditor()!.widget.controller.updateSelection(
editor!.widget.controller.updateSelection(
TextSelection.collapsed(offset: pos.offset), ChangeSource.LOCAL);
return true;
}
@ -666,12 +663,10 @@ class _QuillEditorSelectionGestureDetectorBuilder
@override
void onTapDown(TapDownDetails details) {
if (_state.widget.onTapDown != null) {
final renderEditor = getRenderEditor();
if (renderEditor != null) {
if (_state.widget.onTapDown!(
details, renderEditor.getPositionForOffset)) {
return;
}
if (renderEditor != null &&
_state.widget.onTapDown!(
details, renderEditor!.getPositionForOffset)) {
return;
}
}
super.onTapDown(details);
@ -687,16 +682,13 @@ class _QuillEditorSelectionGestureDetectorBuilder
@override
void onSingleTapUp(TapUpDetails details) {
if (_state.widget.onTapUp != null) {
final renderEditor = getRenderEditor();
if (renderEditor != null) {
if (_state.widget.onTapUp!(
details, renderEditor.getPositionForOffset)) {
return;
}
if (renderEditor != null &&
_state.widget.onTapUp!(details, renderEditor!.getPositionForOffset)) {
return;
}
}
getEditor()!.hideToolbar();
editor!.hideToolbar();
final positionSelected = _isPositionSelected(details);
@ -712,12 +704,12 @@ class _QuillEditorSelectionGestureDetectorBuilder
// If `Shift` key is pressed then
// extend current selection instead.
if (isShiftClick(details.kind)) {
getRenderEditor()!
renderEditor!
..extendSelection(details.globalPosition,
cause: SelectionChangedCause.tap)
..onSelectionCompleted();
} else {
getRenderEditor()!
renderEditor!
..selectPosition(cause: SelectionChangedCause.tap)
..onSelectionCompleted();
}
@ -728,7 +720,7 @@ class _QuillEditorSelectionGestureDetectorBuilder
// On macOS/iOS/iPadOS a touch tap places the cursor at the edge
// of the word.
try {
getRenderEditor()!
renderEditor!
..selectWordEdge(SelectionChangedCause.tap)
..onSelectionCompleted();
} finally {
@ -741,7 +733,7 @@ class _QuillEditorSelectionGestureDetectorBuilder
case TargetPlatform.linux:
case TargetPlatform.windows:
try {
getRenderEditor()!
renderEditor!
..selectPosition(cause: SelectionChangedCause.tap)
..onSelectionCompleted();
} finally {
@ -755,12 +747,10 @@ class _QuillEditorSelectionGestureDetectorBuilder
@override
void onSingleLongTapStart(LongPressStartDetails details) {
if (_state.widget.onSingleLongTapStart != null) {
final renderEditor = getRenderEditor();
if (renderEditor != null) {
if (_state.widget.onSingleLongTapStart!(
details, renderEditor.getPositionForOffset)) {
return;
}
if (renderEditor != null &&
_state.widget.onSingleLongTapStart!(
details, renderEditor!.getPositionForOffset)) {
return;
}
}
@ -768,7 +758,7 @@ class _QuillEditorSelectionGestureDetectorBuilder
switch (Theme.of(_state.context).platform) {
case TargetPlatform.iOS:
case TargetPlatform.macOS:
getRenderEditor()!.selectPositionAt(
renderEditor!.selectPositionAt(
from: details.globalPosition,
cause: SelectionChangedCause.longPress,
);
@ -777,7 +767,7 @@ class _QuillEditorSelectionGestureDetectorBuilder
case TargetPlatform.fuchsia:
case TargetPlatform.linux:
case TargetPlatform.windows:
getRenderEditor()!.selectWord(SelectionChangedCause.longPress);
renderEditor!.selectWord(SelectionChangedCause.longPress);
Feedback.forLongPress(_state.context);
break;
default:
@ -789,15 +779,14 @@ class _QuillEditorSelectionGestureDetectorBuilder
@override
void onSingleLongTapEnd(LongPressEndDetails details) {
if (_state.widget.onSingleLongTapEnd != null) {
final renderEditor = getRenderEditor();
if (renderEditor != null) {
if (_state.widget.onSingleLongTapEnd!(
details, renderEditor.getPositionForOffset)) {
details, renderEditor!.getPositionForOffset)) {
return;
}
if (delegate.getSelectionEnabled()) {
renderEditor.onSelectionCompleted();
renderEditor!.onSelectionCompleted();
}
}
}

Loading…
Cancel
Save