Skip to content

Commit 008e077

Browse files
angelosilvestrematthew-carroll
authored andcommitted
[SuperEditor][SuperTextField][Android] Trigger light haptic feedback when dragging collapsed or expanded handles (Resolves #2113) (#2244)
1 parent 4b3ea8f commit 008e077

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

super_editor/lib/src/default_editor/document_gestures_touch_android.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1101,6 +1101,9 @@ class _AndroidDocumentTouchInteractorState extends State<AndroidDocumentTouchInt
11011101
final fingerDocumentPosition = _docLayout.getDocumentPositionNearestToOffset(
11021102
_startDragPositionOffset! + fingerDragDelta - Offset(0, scrollDelta),
11031103
)!;
1104+
if (fingerDocumentPosition != widget.selection.value!.extent) {
1105+
HapticFeedback.lightImpact();
1106+
}
11041107
_selectPosition(fingerDocumentPosition);
11051108
}
11061109

@@ -1470,6 +1473,7 @@ class SuperEditorAndroidControlsOverlayManagerState extends State<SuperEditorAnd
14701473
void _updateDragHandleSelection(DocumentSelection newSelection) {
14711474
if (newSelection != widget.selection.value) {
14721475
widget.setSelection(newSelection);
1476+
HapticFeedback.lightImpact();
14731477
}
14741478
}
14751479

super_editor/lib/src/super_textfield/android/_editing_controls.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import 'dart:math';
33

44
import 'package:flutter/gestures.dart';
55
import 'package:flutter/material.dart';
6+
import 'package:flutter/services.dart';
67
import 'package:super_editor/src/infrastructure/flutter/flutter_scheduler.dart';
78
import 'package:super_editor/src/infrastructure/multi_listenable_builder.dart';
89
import 'package:super_editor/src/infrastructure/_logging.dart';
@@ -341,6 +342,7 @@ class _AndroidEditingOverlayControlsState extends State<AndroidEditingOverlayCon
341342
void _updateDragHandleSelection(TextSelection selection) {
342343
if (selection != widget.editingController.textController.selection) {
343344
widget.editingController.textController.selection = selection;
345+
HapticFeedback.lightImpact();
344346
}
345347
}
346348

super_editor/lib/src/super_textfield/android/_user_interaction.dart

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:flutter/gestures.dart';
22
import 'package:flutter/material.dart';
3+
import 'package:flutter/services.dart';
34
import 'package:super_editor/src/infrastructure/_logging.dart';
45
import 'package:super_editor/src/infrastructure/flutter/flutter_scheduler.dart';
56
import 'package:super_editor/src/infrastructure/multi_tap_gesture.dart';
@@ -316,10 +317,15 @@ class AndroidTextFieldTouchInteractorState extends State<AndroidTextFieldTouchIn
316317
return;
317318
}
318319

319-
widget.textController.selection = TextSelection.collapsed(
320+
final newSelection = TextSelection.collapsed(
320321
offset: _globalOffsetToTextPosition(details.globalPosition).offset,
321322
);
322323

324+
if (newSelection != widget.textController.selection) {
325+
widget.textController.selection = newSelection;
326+
HapticFeedback.lightImpact();
327+
}
328+
323329
setState(() {
324330
_globalDragOffset = _globalDragOffset! + details.delta;
325331
_dragOffset = _dragOffset! + details.delta;

0 commit comments

Comments
 (0)