Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
cb9e9a37
Unverified
Commit
cb9e9a37
authored
Mar 09, 2022
by
Kate Lovett
Committed by
GitHub
Mar 09, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove deprecated RenderEditable.onSelectionChanged (#98582)
parent
574173bb
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
34 additions
and
172 deletions
+34
-172
editable.dart
packages/flutter/lib/src/rendering/editable.dart
+0
-41
text_input.dart
packages/flutter/lib/src/services/text_input.dart
+0
-11
editable_gesture_test.dart
packages/flutter/test/rendering/editable_gesture_test.dart
+0
-1
editable_test.dart
packages/flutter/test/rendering/editable_test.dart
+34
-119
No files found.
packages/flutter/lib/src/rendering/editable.dart
View file @
cb9e9a37
...
@@ -30,17 +30,6 @@ const EdgeInsets _kFloatingCaretSizeIncrease = EdgeInsets.symmetric(horizontal:
...
@@ -30,17 +30,6 @@ const EdgeInsets _kFloatingCaretSizeIncrease = EdgeInsets.symmetric(horizontal:
// The corner radius of the floating cursor in pixels.
// The corner radius of the floating cursor in pixels.
const
Radius
_kFloatingCaretRadius
=
Radius
.
circular
(
1.0
);
const
Radius
_kFloatingCaretRadius
=
Radius
.
circular
(
1.0
);
/// Signature for the callback that reports when the user changes the selection
/// (including the cursor location).
///
/// Used by [RenderEditable.onSelectionChanged].
@Deprecated
(
'Signature of a deprecated class method, '
'textSelectionDelegate.userUpdateTextEditingValue. '
'This feature was deprecated after v1.26.0-17.2.pre.'
,
)
typedef
SelectionChangedHandler
=
void
Function
(
TextSelection
selection
,
RenderEditable
renderObject
,
SelectionChangedCause
cause
);
/// Signature for the callback that reports when the caret location changes.
/// Signature for the callback that reports when the caret location changes.
///
///
/// Used by [RenderEditable.onCaretChanged].
/// Used by [RenderEditable.onCaretChanged].
...
@@ -265,11 +254,6 @@ class RenderEditable extends RenderBox with RelayoutWhenSystemFontsChangeMixin,
...
@@ -265,11 +254,6 @@ class RenderEditable extends RenderBox with RelayoutWhenSystemFontsChangeMixin,
double
textScaleFactor
=
1.0
,
double
textScaleFactor
=
1.0
,
TextSelection
?
selection
,
TextSelection
?
selection
,
required
ViewportOffset
offset
,
required
ViewportOffset
offset
,
@Deprecated
(
'Uses the textSelectionDelegate.userUpdateTextEditingValue instead. '
'This feature was deprecated after v1.26.0-17.2.pre.'
,
)
this
.
onSelectionChanged
,
this
.
onCaretChanged
,
this
.
onCaretChanged
,
this
.
ignorePointer
=
false
,
this
.
ignorePointer
=
false
,
bool
readOnly
=
false
,
bool
readOnly
=
false
,
...
@@ -501,14 +485,6 @@ class RenderEditable extends RenderBox with RelayoutWhenSystemFontsChangeMixin,
...
@@ -501,14 +485,6 @@ class RenderEditable extends RenderBox with RelayoutWhenSystemFontsChangeMixin,
],
],
);
);
}
}
/// Called when the selection changes.
///
/// If this is null, then selection changes will be ignored.
@Deprecated
(
'Uses the textSelectionDelegate.userUpdateTextEditingValue instead. '
'This feature was deprecated after v1.26.0-17.2.pre.'
,
)
SelectionChangedHandler
?
onSelectionChanged
;
double
?
_textLayoutLastMaxWidth
;
double
?
_textLayoutLastMaxWidth
;
double
?
_textLayoutLastMinWidth
;
double
?
_textLayoutLastMinWidth
;
...
@@ -731,7 +707,6 @@ class RenderEditable extends RenderBox with RelayoutWhenSystemFontsChangeMixin,
...
@@ -731,7 +707,6 @@ class RenderEditable extends RenderBox with RelayoutWhenSystemFontsChangeMixin,
}
}
void
_setTextEditingValue
(
TextEditingValue
newValue
,
SelectionChangedCause
cause
)
{
void
_setTextEditingValue
(
TextEditingValue
newValue
,
SelectionChangedCause
cause
)
{
textSelectionDelegate
.
textEditingValue
=
newValue
;
textSelectionDelegate
.
userUpdateTextEditingValue
(
newValue
,
cause
);
textSelectionDelegate
.
userUpdateTextEditingValue
(
newValue
,
cause
);
}
}
...
@@ -751,28 +726,12 @@ class RenderEditable extends RenderBox with RelayoutWhenSystemFontsChangeMixin,
...
@@ -751,28 +726,12 @@ class RenderEditable extends RenderBox with RelayoutWhenSystemFontsChangeMixin,
extentOffset:
math
.
min
(
nextSelection
.
extentOffset
,
textLength
),
extentOffset:
math
.
min
(
nextSelection
.
extentOffset
,
textLength
),
);
);
}
}
_handleSelectionChange
(
nextSelection
,
cause
);
_setTextEditingValue
(
_setTextEditingValue
(
textSelectionDelegate
.
textEditingValue
.
copyWith
(
selection:
nextSelection
),
textSelectionDelegate
.
textEditingValue
.
copyWith
(
selection:
nextSelection
),
cause
,
cause
,
);
);
}
}
void
_handleSelectionChange
(
TextSelection
nextSelection
,
SelectionChangedCause
cause
,
)
{
// Changes made by the keyboard can sometimes be "out of band" for listening
// components, so always send those events, even if we didn't think it
// changed. Also, focusing an empty field is sent as a selection change even
// if the selection offset didn't change.
final
bool
focusingEmpty
=
nextSelection
.
baseOffset
==
0
&&
nextSelection
.
extentOffset
==
0
&&
!
hasFocus
;
if
(
nextSelection
==
selection
&&
cause
!=
SelectionChangedCause
.
keyboard
&&
!
focusingEmpty
)
{
return
;
}
onSelectionChanged
?.
call
(
nextSelection
,
this
,
cause
);
}
@override
@override
void
markNeedsPaint
()
{
void
markNeedsPaint
()
{
super
.
markNeedsPaint
();
super
.
markNeedsPaint
();
...
...
packages/flutter/lib/src/services/text_input.dart
View file @
cb9e9a37
...
@@ -965,17 +965,6 @@ mixin TextSelectionDelegate {
...
@@ -965,17 +965,6 @@ mixin TextSelectionDelegate {
/// Gets the current text input.
/// Gets the current text input.
TextEditingValue
get
textEditingValue
;
TextEditingValue
get
textEditingValue
;
/// Indicates that the user has requested the delegate to replace its current
/// text editing state with [value].
///
/// The new [value] is treated as user input and thus may subject to input
/// formatting.
@Deprecated
(
'Use the userUpdateTextEditingValue instead. '
'This feature was deprecated after v1.26.0-17.2.pre.'
,
)
set
textEditingValue
(
TextEditingValue
value
)
{}
/// Indicates that the user has requested the delegate to replace its current
/// Indicates that the user has requested the delegate to replace its current
/// text editing state with [value].
/// text editing state with [value].
///
///
...
...
packages/flutter/test/rendering/editable_gesture_test.dart
View file @
cb9e9a37
...
@@ -32,7 +32,6 @@ void main() {
...
@@ -32,7 +32,6 @@ void main() {
extentOffset:
3
,
extentOffset:
3
,
affinity:
TextAffinity
.
upstream
,
affinity:
TextAffinity
.
upstream
,
),
),
onSelectionChanged:
(
_
,
__
,
___
)
{
},
);
);
editable
.
layout
(
BoxConstraints
.
loose
(
const
Size
(
1000.0
,
1000.0
)));
editable
.
layout
(
BoxConstraints
.
loose
(
const
Size
(
1000.0
,
1000.0
)));
...
...
packages/flutter/test/rendering/editable_test.dart
View file @
cb9e9a37
...
@@ -27,11 +27,15 @@ class _FakeEditableTextState with TextSelectionDelegate {
...
@@ -27,11 +27,15 @@ class _FakeEditableTextState with TextSelectionDelegate {
@override
@override
TextEditingValue
textEditingValue
=
TextEditingValue
.
empty
;
TextEditingValue
textEditingValue
=
TextEditingValue
.
empty
;
TextSelection
?
selection
;
@override
@override
void
hideToolbar
([
bool
hideHandles
=
true
])
{
}
void
hideToolbar
([
bool
hideHandles
=
true
])
{
}
@override
@override
void
userUpdateTextEditingValue
(
TextEditingValue
value
,
SelectionChangedCause
cause
)
{
}
void
userUpdateTextEditingValue
(
TextEditingValue
value
,
SelectionChangedCause
cause
)
{
selection
=
value
.
selection
;
}
@override
@override
void
bringIntoView
(
TextPosition
position
)
{
}
void
bringIntoView
(
TextPosition
position
)
{
}
...
@@ -471,10 +475,9 @@ void main() {
...
@@ -471,10 +475,9 @@ void main() {
test
(
'selects correct place with offsets'
,
()
{
test
(
'selects correct place with offsets'
,
()
{
const
String
text
=
'test
\n
test'
;
const
String
text
=
'test
\n
test'
;
final
TextSelectionDeleg
ate
delegate
=
_FakeEditableTextState
()
final
_FakeEditableTextSt
ate
delegate
=
_FakeEditableTextState
()
..
textEditingValue
=
const
TextEditingValue
(
text:
text
);
..
textEditingValue
=
const
TextEditingValue
(
text:
text
);
final
ViewportOffset
viewportOffset
=
ViewportOffset
.
zero
();
final
ViewportOffset
viewportOffset
=
ViewportOffset
.
zero
();
late
TextSelection
currentSelection
;
final
RenderEditable
editable
=
RenderEditable
(
final
RenderEditable
editable
=
RenderEditable
(
backgroundCursorColor:
Colors
.
grey
,
backgroundCursorColor:
Colors
.
grey
,
selectionColor:
Colors
.
black
,
selectionColor:
Colors
.
black
,
...
@@ -484,9 +487,6 @@ void main() {
...
@@ -484,9 +487,6 @@ void main() {
// This makes the scroll axis vertical.
// This makes the scroll axis vertical.
maxLines:
2
,
maxLines:
2
,
textSelectionDelegate:
delegate
,
textSelectionDelegate:
delegate
,
onSelectionChanged:
(
TextSelection
selection
,
RenderEditable
renderObject
,
SelectionChangedCause
cause
)
{
currentSelection
=
selection
;
},
startHandleLayerLink:
LayerLink
(),
startHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
text:
const
TextSpan
(
text:
const
TextSpan
(
...
@@ -509,9 +509,8 @@ void main() {
...
@@ -509,9 +509,8 @@ void main() {
editable
.
selectPositionAt
(
from:
const
Offset
(
0
,
2
),
cause:
SelectionChangedCause
.
tap
);
editable
.
selectPositionAt
(
from:
const
Offset
(
0
,
2
),
cause:
SelectionChangedCause
.
tap
);
pumpFrame
();
pumpFrame
();
expect
(
delegate
.
selection
!.
isCollapsed
,
true
);
expect
(
currentSelection
.
isCollapsed
,
true
);
expect
(
delegate
.
selection
!.
baseOffset
,
0
);
expect
(
currentSelection
.
baseOffset
,
0
);
viewportOffset
.
correctBy
(
10
);
viewportOffset
.
correctBy
(
10
);
...
@@ -527,8 +526,8 @@ void main() {
...
@@ -527,8 +526,8 @@ void main() {
editable
.
selectPositionAt
(
from:
const
Offset
(
0
,
2
),
cause:
SelectionChangedCause
.
tap
);
editable
.
selectPositionAt
(
from:
const
Offset
(
0
,
2
),
cause:
SelectionChangedCause
.
tap
);
pumpFrame
();
pumpFrame
();
expect
(
currentSelection
.
isCollapsed
,
true
);
expect
(
delegate
.
selection
!
.
isCollapsed
,
true
);
expect
(
currentSelection
.
baseOffset
,
5
);
expect
(
delegate
.
selection
!
.
baseOffset
,
5
);
// Test the other selection methods.
// Test the other selection methods.
// Move over by one character.
// Move over by one character.
...
@@ -536,24 +535,24 @@ void main() {
...
@@ -536,24 +535,24 @@ void main() {
pumpFrame
();
pumpFrame
();
editable
.
selectPosition
(
cause:
SelectionChangedCause
.
tap
);
editable
.
selectPosition
(
cause:
SelectionChangedCause
.
tap
);
pumpFrame
();
pumpFrame
();
expect
(
currentSelection
.
isCollapsed
,
true
);
expect
(
delegate
.
selection
!
.
isCollapsed
,
true
);
expect
(
currentSelection
.
baseOffset
,
6
);
expect
(
delegate
.
selection
!
.
baseOffset
,
6
);
editable
.
handleTapDown
(
TapDownDetails
(
globalPosition:
const
Offset
(
20
,
2
)));
editable
.
handleTapDown
(
TapDownDetails
(
globalPosition:
const
Offset
(
20
,
2
)));
pumpFrame
();
pumpFrame
();
editable
.
selectWord
(
cause:
SelectionChangedCause
.
longPress
);
editable
.
selectWord
(
cause:
SelectionChangedCause
.
longPress
);
pumpFrame
();
pumpFrame
();
expect
(
currentSelection
.
isCollapsed
,
false
);
expect
(
delegate
.
selection
!
.
isCollapsed
,
false
);
expect
(
currentSelection
.
baseOffset
,
5
);
expect
(
delegate
.
selection
!
.
baseOffset
,
5
);
expect
(
currentSelection
.
extentOffset
,
9
);
expect
(
delegate
.
selection
!
.
extentOffset
,
9
);
// Select one more character down but since it's still part of the same
// Select one more character down but since it's still part of the same
// word, the same word is selected.
// word, the same word is selected.
editable
.
selectWordsInRange
(
from:
const
Offset
(
30
,
2
),
cause:
SelectionChangedCause
.
longPress
);
editable
.
selectWordsInRange
(
from:
const
Offset
(
30
,
2
),
cause:
SelectionChangedCause
.
longPress
);
pumpFrame
();
pumpFrame
();
expect
(
currentSelection
.
isCollapsed
,
false
);
expect
(
delegate
.
selection
!
.
isCollapsed
,
false
);
expect
(
currentSelection
.
baseOffset
,
5
);
expect
(
delegate
.
selection
!
.
baseOffset
,
5
);
expect
(
currentSelection
.
extentOffset
,
9
);
expect
(
delegate
.
selection
!
.
extentOffset
,
9
);
});
});
test
(
'selects readonly renderEditable matches native behavior for android'
,
()
{
test
(
'selects readonly renderEditable matches native behavior for android'
,
()
{
...
@@ -561,10 +560,9 @@ void main() {
...
@@ -561,10 +560,9 @@ void main() {
final
TargetPlatform
?
previousPlatform
=
debugDefaultTargetPlatformOverride
;
final
TargetPlatform
?
previousPlatform
=
debugDefaultTargetPlatformOverride
;
debugDefaultTargetPlatformOverride
=
TargetPlatform
.
android
;
debugDefaultTargetPlatformOverride
=
TargetPlatform
.
android
;
const
String
text
=
' test'
;
const
String
text
=
' test'
;
final
TextSelectionDeleg
ate
delegate
=
_FakeEditableTextState
()
final
_FakeEditableTextSt
ate
delegate
=
_FakeEditableTextState
()
..
textEditingValue
=
const
TextEditingValue
(
text:
text
);
..
textEditingValue
=
const
TextEditingValue
(
text:
text
);
final
ViewportOffset
viewportOffset
=
ViewportOffset
.
zero
();
final
ViewportOffset
viewportOffset
=
ViewportOffset
.
zero
();
late
TextSelection
currentSelection
;
final
RenderEditable
editable
=
RenderEditable
(
final
RenderEditable
editable
=
RenderEditable
(
backgroundCursorColor:
Colors
.
grey
,
backgroundCursorColor:
Colors
.
grey
,
selectionColor:
Colors
.
black
,
selectionColor:
Colors
.
black
,
...
@@ -573,9 +571,6 @@ void main() {
...
@@ -573,9 +571,6 @@ void main() {
readOnly:
true
,
readOnly:
true
,
offset:
viewportOffset
,
offset:
viewportOffset
,
textSelectionDelegate:
delegate
,
textSelectionDelegate:
delegate
,
onSelectionChanged:
(
TextSelection
selection
,
RenderEditable
renderObject
,
SelectionChangedCause
cause
)
{
currentSelection
=
selection
;
},
startHandleLayerLink:
LayerLink
(),
startHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
text:
const
TextSpan
(
text:
const
TextSpan
(
...
@@ -594,9 +589,9 @@ void main() {
...
@@ -594,9 +589,9 @@ void main() {
// Select the second white space, where the text position = 1.
// Select the second white space, where the text position = 1.
editable
.
selectWordsInRange
(
from:
const
Offset
(
10
,
2
),
cause:
SelectionChangedCause
.
longPress
);
editable
.
selectWordsInRange
(
from:
const
Offset
(
10
,
2
),
cause:
SelectionChangedCause
.
longPress
);
pumpFrame
();
pumpFrame
();
expect
(
currentSelection
.
isCollapsed
,
false
);
expect
(
delegate
.
selection
!
.
isCollapsed
,
false
);
expect
(
currentSelection
.
baseOffset
,
1
);
expect
(
delegate
.
selection
!
.
baseOffset
,
1
);
expect
(
currentSelection
.
extentOffset
,
2
);
expect
(
delegate
.
selection
!
.
extentOffset
,
2
);
debugDefaultTargetPlatformOverride
=
previousPlatform
;
debugDefaultTargetPlatformOverride
=
previousPlatform
;
});
});
...
@@ -605,10 +600,9 @@ void main() {
...
@@ -605,10 +600,9 @@ void main() {
final
TargetPlatform
?
previousPlatform
=
debugDefaultTargetPlatformOverride
;
final
TargetPlatform
?
previousPlatform
=
debugDefaultTargetPlatformOverride
;
debugDefaultTargetPlatformOverride
=
TargetPlatform
.
iOS
;
debugDefaultTargetPlatformOverride
=
TargetPlatform
.
iOS
;
const
String
text
=
' test'
;
const
String
text
=
' test'
;
final
TextSelectionDeleg
ate
delegate
=
_FakeEditableTextState
()
final
_FakeEditableTextSt
ate
delegate
=
_FakeEditableTextState
()
..
textEditingValue
=
const
TextEditingValue
(
text:
text
);
..
textEditingValue
=
const
TextEditingValue
(
text:
text
);
final
ViewportOffset
viewportOffset
=
ViewportOffset
.
zero
();
final
ViewportOffset
viewportOffset
=
ViewportOffset
.
zero
();
late
TextSelection
currentSelection
;
final
RenderEditable
editable
=
RenderEditable
(
final
RenderEditable
editable
=
RenderEditable
(
backgroundCursorColor:
Colors
.
grey
,
backgroundCursorColor:
Colors
.
grey
,
selectionColor:
Colors
.
black
,
selectionColor:
Colors
.
black
,
...
@@ -616,9 +610,6 @@ void main() {
...
@@ -616,9 +610,6 @@ void main() {
cursorColor:
Colors
.
red
,
cursorColor:
Colors
.
red
,
offset:
viewportOffset
,
offset:
viewportOffset
,
textSelectionDelegate:
delegate
,
textSelectionDelegate:
delegate
,
onSelectionChanged:
(
TextSelection
selection
,
RenderEditable
renderObject
,
SelectionChangedCause
cause
)
{
currentSelection
=
selection
;
},
startHandleLayerLink:
LayerLink
(),
startHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
text:
const
TextSpan
(
text:
const
TextSpan
(
...
@@ -637,9 +628,9 @@ void main() {
...
@@ -637,9 +628,9 @@ void main() {
// Select the second white space, where the text position = 1.
// Select the second white space, where the text position = 1.
editable
.
selectWordsInRange
(
from:
const
Offset
(
10
,
2
),
cause:
SelectionChangedCause
.
longPress
);
editable
.
selectWordsInRange
(
from:
const
Offset
(
10
,
2
),
cause:
SelectionChangedCause
.
longPress
);
pumpFrame
();
pumpFrame
();
expect
(
currentSelection
.
isCollapsed
,
false
);
expect
(
delegate
.
selection
!
.
isCollapsed
,
false
);
expect
(
currentSelection
.
baseOffset
,
1
);
expect
(
delegate
.
selection
!
.
baseOffset
,
1
);
expect
(
currentSelection
.
extentOffset
,
6
);
expect
(
delegate
.
selection
!
.
extentOffset
,
6
);
debugDefaultTargetPlatformOverride
=
previousPlatform
;
debugDefaultTargetPlatformOverride
=
previousPlatform
;
});
});
...
@@ -648,10 +639,9 @@ void main() {
...
@@ -648,10 +639,9 @@ void main() {
final
TargetPlatform
?
previousPlatform
=
debugDefaultTargetPlatformOverride
;
final
TargetPlatform
?
previousPlatform
=
debugDefaultTargetPlatformOverride
;
debugDefaultTargetPlatformOverride
=
TargetPlatform
.
iOS
;
debugDefaultTargetPlatformOverride
=
TargetPlatform
.
iOS
;
const
String
text
=
' '
;
const
String
text
=
' '
;
final
TextSelectionDeleg
ate
delegate
=
_FakeEditableTextState
()
final
_FakeEditableTextSt
ate
delegate
=
_FakeEditableTextState
()
..
textEditingValue
=
const
TextEditingValue
(
text:
text
);
..
textEditingValue
=
const
TextEditingValue
(
text:
text
);
final
ViewportOffset
viewportOffset
=
ViewportOffset
.
zero
();
final
ViewportOffset
viewportOffset
=
ViewportOffset
.
zero
();
late
TextSelection
currentSelection
;
final
RenderEditable
editable
=
RenderEditable
(
final
RenderEditable
editable
=
RenderEditable
(
backgroundCursorColor:
Colors
.
grey
,
backgroundCursorColor:
Colors
.
grey
,
selectionColor:
Colors
.
black
,
selectionColor:
Colors
.
black
,
...
@@ -659,9 +649,6 @@ void main() {
...
@@ -659,9 +649,6 @@ void main() {
cursorColor:
Colors
.
red
,
cursorColor:
Colors
.
red
,
offset:
viewportOffset
,
offset:
viewportOffset
,
textSelectionDelegate:
delegate
,
textSelectionDelegate:
delegate
,
onSelectionChanged:
(
TextSelection
selection
,
RenderEditable
renderObject
,
SelectionChangedCause
cause
)
{
currentSelection
=
selection
;
},
startHandleLayerLink:
LayerLink
(),
startHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
text:
const
TextSpan
(
text:
const
TextSpan
(
...
@@ -680,18 +667,17 @@ void main() {
...
@@ -680,18 +667,17 @@ void main() {
// Select the second white space, where the text position = 1.
// Select the second white space, where the text position = 1.
editable
.
selectWordsInRange
(
from:
const
Offset
(
10
,
2
),
cause:
SelectionChangedCause
.
longPress
);
editable
.
selectWordsInRange
(
from:
const
Offset
(
10
,
2
),
cause:
SelectionChangedCause
.
longPress
);
pumpFrame
();
pumpFrame
();
expect
(
currentSelection
.
isCollapsed
,
true
);
expect
(
delegate
.
selection
!
.
isCollapsed
,
true
);
expect
(
currentSelection
.
baseOffset
,
1
);
expect
(
delegate
.
selection
!
.
baseOffset
,
1
);
expect
(
currentSelection
.
extentOffset
,
1
);
expect
(
delegate
.
selection
!
.
extentOffset
,
1
);
debugDefaultTargetPlatformOverride
=
previousPlatform
;
debugDefaultTargetPlatformOverride
=
previousPlatform
;
});
});
test
(
'selects correct place when offsets are flipped'
,
()
{
test
(
'selects correct place when offsets are flipped'
,
()
{
const
String
text
=
'abc def ghi'
;
const
String
text
=
'abc def ghi'
;
final
TextSelectionDeleg
ate
delegate
=
_FakeEditableTextState
()
final
_FakeEditableTextSt
ate
delegate
=
_FakeEditableTextState
()
..
textEditingValue
=
const
TextEditingValue
(
text:
text
);
..
textEditingValue
=
const
TextEditingValue
(
text:
text
);
final
ViewportOffset
viewportOffset
=
ViewportOffset
.
zero
();
final
ViewportOffset
viewportOffset
=
ViewportOffset
.
zero
();
late
TextSelection
currentSelection
;
final
RenderEditable
editable
=
RenderEditable
(
final
RenderEditable
editable
=
RenderEditable
(
backgroundCursorColor:
Colors
.
grey
,
backgroundCursorColor:
Colors
.
grey
,
selectionColor:
Colors
.
black
,
selectionColor:
Colors
.
black
,
...
@@ -699,9 +685,6 @@ void main() {
...
@@ -699,9 +685,6 @@ void main() {
cursorColor:
Colors
.
red
,
cursorColor:
Colors
.
red
,
offset:
viewportOffset
,
offset:
viewportOffset
,
textSelectionDelegate:
delegate
,
textSelectionDelegate:
delegate
,
onSelectionChanged:
(
TextSelection
selection
,
RenderEditable
renderObject
,
SelectionChangedCause
cause
)
{
currentSelection
=
selection
;
},
text:
const
TextSpan
(
text:
const
TextSpan
(
text:
text
,
text:
text
,
style:
TextStyle
(
style:
TextStyle
(
...
@@ -716,71 +699,9 @@ void main() {
...
@@ -716,71 +699,9 @@ void main() {
editable
.
selectPositionAt
(
from:
const
Offset
(
30
,
2
),
to:
const
Offset
(
10
,
2
),
cause:
SelectionChangedCause
.
drag
);
editable
.
selectPositionAt
(
from:
const
Offset
(
30
,
2
),
to:
const
Offset
(
10
,
2
),
cause:
SelectionChangedCause
.
drag
);
pumpFrame
();
pumpFrame
();
expect
(
delegate
.
selection
!.
isCollapsed
,
isFalse
);
expect
(
currentSelection
.
isCollapsed
,
isFalse
);
expect
(
delegate
.
selection
!.
baseOffset
,
3
);
expect
(
currentSelection
.
baseOffset
,
3
);
expect
(
delegate
.
selection
!.
extentOffset
,
1
);
expect
(
currentSelection
.
extentOffset
,
1
);
});
test
(
'selection does not flicker as user is dragging'
,
()
{
int
selectionChangedCount
=
0
;
TextSelection
?
updatedSelection
;
const
String
text
=
'abc def ghi'
;
final
TextSelectionDelegate
delegate
=
_FakeEditableTextState
()
..
textEditingValue
=
const
TextEditingValue
(
text:
text
);
const
TextSpan
span
=
TextSpan
(
text:
text
,
style:
TextStyle
(
height:
1.0
,
fontSize:
10.0
,
fontFamily:
'Ahem'
,
),
);
final
RenderEditable
editable1
=
RenderEditable
(
textSelectionDelegate:
delegate
,
textDirection:
TextDirection
.
ltr
,
offset:
ViewportOffset
.
zero
(),
selection:
const
TextSelection
(
baseOffset:
3
,
extentOffset:
4
),
onSelectionChanged:
(
TextSelection
selection
,
RenderEditable
renderObject
,
SelectionChangedCause
cause
)
{
selectionChangedCount
++;
updatedSelection
=
selection
;
},
startHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
text:
span
,
);
layout
(
editable1
);
// Shouldn't cause a selection change.
editable1
.
selectPositionAt
(
from:
const
Offset
(
30
,
2
),
to:
const
Offset
(
42
,
2
),
cause:
SelectionChangedCause
.
drag
);
pumpFrame
();
expect
(
updatedSelection
,
isNull
);
expect
(
selectionChangedCount
,
0
);
final
RenderEditable
editable2
=
RenderEditable
(
textSelectionDelegate:
delegate
,
textDirection:
TextDirection
.
ltr
,
offset:
ViewportOffset
.
zero
(),
selection:
const
TextSelection
(
baseOffset:
3
,
extentOffset:
4
),
onSelectionChanged:
(
TextSelection
selection
,
RenderEditable
renderObject
,
SelectionChangedCause
cause
)
{
selectionChangedCount
++;
updatedSelection
=
selection
;
},
text:
span
,
startHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
);
layout
(
editable2
);
// Now this should cause a selection change.
editable2
.
selectPositionAt
(
from:
const
Offset
(
30
,
2
),
to:
const
Offset
(
48
,
2
),
cause:
SelectionChangedCause
.
drag
);
pumpFrame
();
expect
(
updatedSelection
!.
baseOffset
,
3
);
expect
(
updatedSelection
!.
extentOffset
,
5
);
expect
(
selectionChangedCount
,
1
);
});
});
test
(
'promptRect disappears when promptRectColor is set to null'
,
()
{
test
(
'promptRect disappears when promptRectColor is set to null'
,
()
{
...
@@ -1318,7 +1239,6 @@ void main() {
...
@@ -1318,7 +1239,6 @@ void main() {
cursorColor:
Colors
.
red
,
cursorColor:
Colors
.
red
,
offset:
viewportOffset
,
offset:
viewportOffset
,
textSelectionDelegate:
delegate
,
textSelectionDelegate:
delegate
,
onSelectionChanged:
(
TextSelection
selection
,
RenderEditable
renderObject
,
SelectionChangedCause
cause
)
{},
startHandleLayerLink:
LayerLink
(),
startHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
text:
TextSpan
(
text:
TextSpan
(
...
@@ -1361,7 +1281,6 @@ void main() {
...
@@ -1361,7 +1281,6 @@ void main() {
cursorColor:
Colors
.
red
,
cursorColor:
Colors
.
red
,
offset:
viewportOffset
,
offset:
viewportOffset
,
textSelectionDelegate:
delegate
,
textSelectionDelegate:
delegate
,
onSelectionChanged:
(
TextSelection
selection
,
RenderEditable
renderObject
,
SelectionChangedCause
cause
)
{},
startHandleLayerLink:
LayerLink
(),
startHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
text:
TextSpan
(
text:
TextSpan
(
...
@@ -1406,7 +1325,6 @@ void main() {
...
@@ -1406,7 +1325,6 @@ void main() {
cursorColor:
Colors
.
red
,
cursorColor:
Colors
.
red
,
offset:
viewportOffset
,
offset:
viewportOffset
,
textSelectionDelegate:
delegate
,
textSelectionDelegate:
delegate
,
onSelectionChanged:
(
TextSelection
selection
,
RenderEditable
renderObject
,
SelectionChangedCause
cause
)
{},
startHandleLayerLink:
LayerLink
(),
startHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
text:
const
TextSpan
(
text:
const
TextSpan
(
...
@@ -1457,7 +1375,6 @@ void main() {
...
@@ -1457,7 +1375,6 @@ void main() {
cursorColor:
Colors
.
red
,
cursorColor:
Colors
.
red
,
offset:
viewportOffset
,
offset:
viewportOffset
,
textSelectionDelegate:
delegate
,
textSelectionDelegate:
delegate
,
onSelectionChanged:
(
TextSelection
selection
,
RenderEditable
renderObject
,
SelectionChangedCause
cause
)
{},
startHandleLayerLink:
LayerLink
(),
startHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
text:
const
TextSpan
(
text:
const
TextSpan
(
...
@@ -1515,7 +1432,6 @@ void main() {
...
@@ -1515,7 +1432,6 @@ void main() {
cursorColor:
Colors
.
red
,
cursorColor:
Colors
.
red
,
offset:
viewportOffset
,
offset:
viewportOffset
,
textSelectionDelegate:
delegate
,
textSelectionDelegate:
delegate
,
onSelectionChanged:
(
TextSelection
selection
,
RenderEditable
renderObject
,
SelectionChangedCause
cause
)
{},
startHandleLayerLink:
LayerLink
(),
startHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
text:
const
TextSpan
(
text:
const
TextSpan
(
...
@@ -1574,7 +1490,6 @@ void main() {
...
@@ -1574,7 +1490,6 @@ void main() {
cursorColor:
Colors
.
red
,
cursorColor:
Colors
.
red
,
offset:
viewportOffset
,
offset:
viewportOffset
,
textSelectionDelegate:
delegate
,
textSelectionDelegate:
delegate
,
onSelectionChanged:
(
TextSelection
selection
,
RenderEditable
renderObject
,
SelectionChangedCause
cause
)
{},
startHandleLayerLink:
LayerLink
(),
startHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
endHandleLayerLink:
LayerLink
(),
text:
const
TextSpan
(
text:
const
TextSpan
(
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment