@@ -840,6 +840,8 @@ class _RenderRangeSlider extends RenderBox with RelayoutWhenSystemFontsChangeMix
840840 late TapGestureRecognizer _tap;
841841 bool _active = false ;
842842 late RangeValues _newValues;
843+ late Offset _startThumbCenter;
844+ late Offset _endThumbCenter;
843845
844846 bool get isEnabled => onChanged != null ;
845847
@@ -1303,8 +1305,8 @@ class _RenderRangeSlider extends RenderBox with RelayoutWhenSystemFontsChangeMix
13031305 sliderTheme: _sliderTheme,
13041306 isDiscrete: isDiscrete,
13051307 );
1306- final Offset startThumbCenter = Offset (trackRect.left + startVisualPosition * trackRect.width, trackRect.center.dy);
1307- final Offset endThumbCenter = Offset (trackRect.left + endVisualPosition * trackRect.width, trackRect.center.dy);
1308+ _startThumbCenter = Offset (trackRect.left + startVisualPosition * trackRect.width, trackRect.center.dy);
1309+ _endThumbCenter = Offset (trackRect.left + endVisualPosition * trackRect.width, trackRect.center.dy);
13081310
13091311 _sliderTheme.rangeTrackShape! .paint (
13101312 context,
@@ -1313,8 +1315,8 @@ class _RenderRangeSlider extends RenderBox with RelayoutWhenSystemFontsChangeMix
13131315 sliderTheme: _sliderTheme,
13141316 enableAnimation: _enableAnimation,
13151317 textDirection: _textDirection,
1316- startThumbCenter: startThumbCenter ,
1317- endThumbCenter: endThumbCenter ,
1318+ startThumbCenter: _startThumbCenter ,
1319+ endThumbCenter: _endThumbCenter ,
13181320 isDiscrete: isDiscrete,
13191321 isEnabled: isEnabled,
13201322 );
@@ -1327,7 +1329,7 @@ class _RenderRangeSlider extends RenderBox with RelayoutWhenSystemFontsChangeMix
13271329 if (startThumbSelected) {
13281330 _sliderTheme.overlayShape! .paint (
13291331 context,
1330- startThumbCenter ,
1332+ _startThumbCenter ,
13311333 activationAnimation: _overlayAnimation,
13321334 enableAnimation: _enableAnimation,
13331335 isDiscrete: isDiscrete,
@@ -1343,7 +1345,7 @@ class _RenderRangeSlider extends RenderBox with RelayoutWhenSystemFontsChangeMix
13431345 if (endThumbSelected) {
13441346 _sliderTheme.overlayShape! .paint (
13451347 context,
1346- endThumbCenter ,
1348+ _endThumbCenter ,
13471349 activationAnimation: _overlayAnimation,
13481350 enableAnimation: _enableAnimation,
13491351 isDiscrete: isDiscrete,
@@ -1381,21 +1383,21 @@ class _RenderRangeSlider extends RenderBox with RelayoutWhenSystemFontsChangeMix
13811383 sliderTheme: _sliderTheme,
13821384 enableAnimation: _enableAnimation,
13831385 textDirection: _textDirection,
1384- startThumbCenter: startThumbCenter ,
1385- endThumbCenter: endThumbCenter ,
1386+ startThumbCenter: _startThumbCenter ,
1387+ endThumbCenter: _endThumbCenter ,
13861388 isEnabled: isEnabled,
13871389 );
13881390 }
13891391 }
13901392 }
13911393
1392- final double thumbDelta = (endThumbCenter .dx - startThumbCenter .dx).abs ();
1394+ final double thumbDelta = (_endThumbCenter .dx - _startThumbCenter .dx).abs ();
13931395
13941396 final bool isLastThumbStart = _lastThumbSelection == Thumb .start;
13951397 final Thumb bottomThumb = isLastThumbStart ? Thumb .end : Thumb .start;
13961398 final Thumb topThumb = isLastThumbStart ? Thumb .start : Thumb .end;
1397- final Offset bottomThumbCenter = isLastThumbStart ? endThumbCenter : startThumbCenter ;
1398- final Offset topThumbCenter = isLastThumbStart ? startThumbCenter : endThumbCenter ;
1399+ final Offset bottomThumbCenter = isLastThumbStart ? _endThumbCenter : _startThumbCenter ;
1400+ final Offset topThumbCenter = isLastThumbStart ? _startThumbCenter : _endThumbCenter ;
13991401 final TextPainter bottomLabelPainter = isLastThumbStart ? _endLabelPainter : _startLabelPainter;
14001402 final TextPainter topLabelPainter = isLastThumbStart ? _startLabelPainter : _endLabelPainter;
14011403 final double bottomValue = isLastThumbStart ? endValue : startValue;
@@ -1441,15 +1443,15 @@ class _RenderRangeSlider extends RenderBox with RelayoutWhenSystemFontsChangeMix
14411443 if (shouldPaintValueIndicators) {
14421444 final double startOffset = sliderTheme.rangeValueIndicatorShape! .getHorizontalShift (
14431445 parentBox: this ,
1444- center: startThumbCenter ,
1446+ center: _startThumbCenter ,
14451447 labelPainter: _startLabelPainter,
14461448 activationAnimation: _valueIndicatorAnimation,
14471449 textScaleFactor: textScaleFactor,
14481450 sizeWithOverflow: resolvedscreenSize,
14491451 );
14501452 final double endOffset = sliderTheme.rangeValueIndicatorShape! .getHorizontalShift (
14511453 parentBox: this ,
1452- center: endThumbCenter ,
1454+ center: _endThumbCenter ,
14531455 labelPainter: _endLabelPainter,
14541456 activationAnimation: _valueIndicatorAnimation,
14551457 textScaleFactor: textScaleFactor,
@@ -1575,8 +1577,16 @@ class _RenderRangeSlider extends RenderBox with RelayoutWhenSystemFontsChangeMix
15751577 );
15761578
15771579 // Split the semantics node area between the start and end nodes.
1578- final Rect leftRect = Rect .fromPoints (node.rect.topLeft, node.rect.bottomCenter);
1579- final Rect rightRect = Rect .fromPoints (node.rect.topCenter, node.rect.bottomRight);
1580+ final Rect leftRect = Rect .fromCenter (
1581+ center: _startThumbCenter,
1582+ width: kMinInteractiveDimension,
1583+ height: kMinInteractiveDimension,
1584+ );
1585+ final Rect rightRect = Rect .fromCenter (
1586+ center: _endThumbCenter,
1587+ width: kMinInteractiveDimension,
1588+ height: kMinInteractiveDimension,
1589+ );
15801590 switch (textDirection) {
15811591 case TextDirection .ltr:
15821592 _startSemanticsNode! .rect = leftRect;
0 commit comments