-
Notifications
You must be signed in to change notification settings - Fork 31
Open
Description
Hello, i have noticed the same issue. The Source Code where it happens is here, within SpinBoxMixin of the base_spin_box.dart file in the Function :
void _updateController(double oldValue, double newValue) {
final text = _formatText(newValue);
final selection = _controller.selection;
final oldOffset = value.isNegative ? 1 : 0;
final newOffset = _parseValue(text).isNegative ? 1 : 0;
_controller.value = _controller.value.copyWith(
text: text,
selection: selection.copyWith(
baseOffset: selection.baseOffset - oldOffset + newOffset, <-- have to be >=-1
extentOffset: selection.extentOffset - oldOffset + newOffset, <-- have to be >=-1
),
);
}
"The initial selection is TextSelection.collapsed(offset: -1)." => selection.baseOffset = -1.
So, if the value < 0 is negative, then oldOffset = 1, and if the newValue = 0 so the newOffset = 0. summing it up, ends with baseOffset = -2 and analog extentOffset = -2.
The fix would be, to check it.
const TextRange({
required this.start,
required this.end,
}) : assert(start >= -1),
assert(end >= -1);
Originally posted by @D4n4m1 in #19 (comment)
Metadata
Metadata
Assignees
Labels
No labels