Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit2937dc8

Browse files
demoYangxuyang
and
xuyang
authored
Copy TapAndPanGestureRecognizer from TextField (#2128)
* [chore]: change gesture* [chore]: change gesture* [chore]: code fromatter* [chore]: remove code* [chore]: add code commentary---------Co-authored-by: xuyang <xuyang@qimao.com>
1 parentbb29a50 commit2937dc8

File tree

6 files changed

+884
-262
lines changed

6 files changed

+884
-262
lines changed

‎lib/src/editor/config/editor_configurations.dart‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import'package:equatable/equatable.dart';
22
import'package:flutter/foundation.dart'show Brightness, Uint8List, immutable;
3+
import'package:flutter/gestures.dart';
34
import'package:flutter/material.dart'
45
show TextCapitalization, TextInputAction, TextSelectionThemeData;
56
import'package:flutter/widgets.dart';
@@ -258,11 +259,12 @@ class QuillEditorConfigurations extends Equatable {
258259

259260
// Returns whether gesture is handled
260261
finalboolFunction(
261-
TapDownDetails details,TextPositionFunction(Offset offset))? onTapDown;
262+
TapDragDownDetails details,TextPositionFunction(Offset offset))?
263+
onTapDown;
262264

263265
// Returns whether gesture is handled
264266
finalboolFunction(
265-
TapUpDetails details,TextPositionFunction(Offset offset))? onTapUp;
267+
TapDragUpDetails details,TextPositionFunction(Offset offset))? onTapUp;
266268

267269
// Returns whether gesture is handled
268270
finalboolFunction(

‎lib/src/editor/editor.dart‎

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,13 @@ import 'package:flutter/cupertino.dart'
44
show CupertinoTheme, cupertinoTextSelectionControls;
55
import'package:flutter/foundation.dart'
66
show ValueListenable, defaultTargetPlatform;
7-
import'package:flutter/gestures.dart'show PointerDeviceKind;
7+
import'package:flutter/gestures.dart'
8+
show
9+
PointerDeviceKind,
10+
TapDragDownDetails,
11+
TapDragEndDetails,
12+
TapDragStartDetails,
13+
TapDragUpDetails;
814
import'package:flutter/material.dart';
915
import'package:flutter/rendering.dart';
1016
import'package:flutter/services.dart';
@@ -488,7 +494,7 @@ class _QuillEditorSelectionGestureDetectorBuilder
488494
editor?.updateMagnifier(details.globalPosition);
489495
}
490496

491-
bool_isPositionSelected(TapUpDetails details) {
497+
bool_isPositionSelected(TapDragUpDetails details) {
492498
if (_state.controller.document.isEmpty()) {
493499
returnfalse;
494500
}
@@ -511,7 +517,7 @@ class _QuillEditorSelectionGestureDetectorBuilder
511517
}
512518

513519
@override
514-
voidonTapDown(TapDownDetails details) {
520+
voidonTapDown(TapDragDownDetails details) {
515521
if (_state.configurations.onTapDown!=null) {
516522
if (renderEditor!=null&&
517523
_state.configurations.onTapDown!(
@@ -532,7 +538,7 @@ class _QuillEditorSelectionGestureDetectorBuilder
532538
}
533539

534540
@override
535-
voidonSingleTapUp(TapUpDetails details) {
541+
voidonSingleTapUp(TapDragUpDetails details) {
536542
if (_state.configurations.onTapUp!=null&&
537543
renderEditor!=null&&
538544
_state.configurations.onTapUp!(
@@ -738,6 +744,7 @@ class RenderEditor extends RenderEditableContainerBox
738744
Document document;
739745
TextSelection selection;
740746
bool _hasFocus=false;
747+
boolget hasFocus=> _hasFocus;
741748
LayerLink _startHandleLayerLink;
742749
LayerLink _endHandleLayerLink;
743750

@@ -944,20 +951,28 @@ class RenderEditor extends RenderEditableContainerBox
944951
}
945952

946953
Offset? _lastTapDownPosition;
954+
Offset? _lastSecondaryTapDownPosition;
955+
956+
Offset?get lastSecondaryTapDownPosition=> _lastSecondaryTapDownPosition;
947957

948958
// Used on Desktop (mouse and keyboard enabled platforms) as base offset
949959
// for extending selection, either with combination of `Shift` + Click or
950960
// by dragging
951961
TextSelection? _extendSelectionOrigin;
952962

963+
voidhandleSecondaryTapDown(TapDownDetails details) {
964+
_lastTapDownPosition= details.globalPosition;
965+
_lastSecondaryTapDownPosition= details.globalPosition;
966+
}
967+
953968
@override
954969
voidhandleTapDown(TapDownDetails details) {
955970
_lastTapDownPosition= details.globalPosition;
956971
}
957972

958973
bool _isDragging=false;
959974

960-
voidhandleDragStart(DragStartDetails details) {
975+
voidhandleDragStart(TapDragStartDetails details) {
961976
_isDragging=true;
962977

963978
final newSelection=selectPositionAt(
@@ -970,7 +985,7 @@ class RenderEditor extends RenderEditableContainerBox
970985
_extendSelectionOrigin= newSelection;
971986
}
972987

973-
voidhandleDragEnd(DragEndDetails details) {
988+
voidhandleDragEnd(TapDragEndDetails details) {
974989
_isDragging=false;
975990
onSelectionCompleted();
976991
}

‎lib/src/editor/raw_editor/raw_editor.dart‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,4 +100,6 @@ abstract class EditorState extends State<QuillRawEditor>
100100
voidupdateMagnifier(Offset positionToShow);
101101

102102
voidhideMagnifier();
103+
104+
voidtoggleToolbar([bool hideHandles=true]);
103105
}

‎lib/src/editor/raw_editor/raw_editor_state.dart‎

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -906,7 +906,7 @@ class QuillRawEditorState extends EditorState
906906
_selectionOverlay?.handlesVisible=_shouldShowSelectionHandles();
907907
_selectionOverlay?.showHandles();
908908

909-
if (!_keyboardVisible) {
909+
if (!_hasFocus) {
910910
// This will show the keyboard for all selection changes on the
911911
// editor, not just changes triggered by user gestures.
912912
requestKeyboard();
@@ -1419,11 +1419,11 @@ class QuillRawEditorState extends EditorState
14191419

14201420
void_updateOrDisposeSelectionOverlayIfNeeded() {
14211421
if (_selectionOverlay!=null) {
1422-
if (!_hasFocus|| textEditingValue.selection.isCollapsed) {
1423-
_selectionOverlay?.dispose();
1424-
_selectionOverlay=null;
1425-
}elseif (_hasFocus) {
1422+
if (_hasFocus) {
14261423
_selectionOverlay!.update(textEditingValue);
1424+
}else {
1425+
_selectionOverlay!.dispose();
1426+
_selectionOverlay=null;
14271427
}
14281428
}elseif (_hasFocus) {
14291429
_selectionOverlay=_createSelectionOverlay();
@@ -1601,6 +1601,16 @@ class QuillRawEditorState extends EditorState
16011601
returntrue;
16021602
}
16031603

1604+
@override
1605+
voidtoggleToolbar([bool hideHandles=true]) {
1606+
final selectionOverlay= _selectionOverlay??=_createSelectionOverlay();
1607+
if (selectionOverlay.handlesVisible) {
1608+
hideToolbar(hideHandles);
1609+
}else {
1610+
showToolbar();
1611+
}
1612+
}
1613+
16041614
void_replaceText(ReplaceTextIntent intent) {
16051615
userUpdateTextEditingValue(
16061616
intent.currentTextEditingValue
@@ -1835,15 +1845,19 @@ class QuillRawEditorState extends EditorState
18351845

18361846
@override
18371847
voidshowMagnifier(ui.Offset positionToShow) {
1848+
if (_hasFocus==false)return;
18381849
if (_selectionOverlay==null)return;
18391850
final position= renderEditor.getPositionForOffset(positionToShow);
1840-
_selectionOverlay?.showMagnifier(position, positionToShow, renderEditor);
1851+
if (_selectionOverlay!.magnifierIsVisible) {
1852+
_selectionOverlay!
1853+
.updateMagnifier(position, positionToShow, renderEditor);
1854+
}else {
1855+
_selectionOverlay!.showMagnifier(position, positionToShow, renderEditor);
1856+
}
18411857
}
18421858

18431859
@override
18441860
voidupdateMagnifier(ui.Offset positionToShow) {
1845-
_updateOrDisposeSelectionOverlayIfNeeded();
1846-
final position= renderEditor.getPositionForOffset(positionToShow);
1847-
_selectionOverlay?.updateMagnifier(position, positionToShow, renderEditor);
1861+
showMagnifier(positionToShow);
18481862
}
18491863
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp