@@ -840,6 +840,8 @@ class _RenderRangeSlider extends RenderBox with RelayoutWhenSystemFontsChangeMix
840
840
late TapGestureRecognizer _tap;
841
841
bool _active = false ;
842
842
late RangeValues _newValues;
843
+ late Offset _startThumbCenter;
844
+ late Offset _endThumbCenter;
843
845
844
846
bool get isEnabled => onChanged != null ;
845
847
@@ -1303,8 +1305,8 @@ class _RenderRangeSlider extends RenderBox with RelayoutWhenSystemFontsChangeMix
1303
1305
sliderTheme: _sliderTheme,
1304
1306
isDiscrete: isDiscrete,
1305
1307
);
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);
1308
1310
1309
1311
_sliderTheme.rangeTrackShape! .paint (
1310
1312
context,
@@ -1313,8 +1315,8 @@ class _RenderRangeSlider extends RenderBox with RelayoutWhenSystemFontsChangeMix
1313
1315
sliderTheme: _sliderTheme,
1314
1316
enableAnimation: _enableAnimation,
1315
1317
textDirection: _textDirection,
1316
- startThumbCenter: startThumbCenter ,
1317
- endThumbCenter: endThumbCenter ,
1318
+ startThumbCenter: _startThumbCenter ,
1319
+ endThumbCenter: _endThumbCenter ,
1318
1320
isDiscrete: isDiscrete,
1319
1321
isEnabled: isEnabled,
1320
1322
);
@@ -1327,7 +1329,7 @@ class _RenderRangeSlider extends RenderBox with RelayoutWhenSystemFontsChangeMix
1327
1329
if (startThumbSelected) {
1328
1330
_sliderTheme.overlayShape! .paint (
1329
1331
context,
1330
- startThumbCenter ,
1332
+ _startThumbCenter ,
1331
1333
activationAnimation: _overlayAnimation,
1332
1334
enableAnimation: _enableAnimation,
1333
1335
isDiscrete: isDiscrete,
@@ -1343,7 +1345,7 @@ class _RenderRangeSlider extends RenderBox with RelayoutWhenSystemFontsChangeMix
1343
1345
if (endThumbSelected) {
1344
1346
_sliderTheme.overlayShape! .paint (
1345
1347
context,
1346
- endThumbCenter ,
1348
+ _endThumbCenter ,
1347
1349
activationAnimation: _overlayAnimation,
1348
1350
enableAnimation: _enableAnimation,
1349
1351
isDiscrete: isDiscrete,
@@ -1381,21 +1383,21 @@ class _RenderRangeSlider extends RenderBox with RelayoutWhenSystemFontsChangeMix
1381
1383
sliderTheme: _sliderTheme,
1382
1384
enableAnimation: _enableAnimation,
1383
1385
textDirection: _textDirection,
1384
- startThumbCenter: startThumbCenter ,
1385
- endThumbCenter: endThumbCenter ,
1386
+ startThumbCenter: _startThumbCenter ,
1387
+ endThumbCenter: _endThumbCenter ,
1386
1388
isEnabled: isEnabled,
1387
1389
);
1388
1390
}
1389
1391
}
1390
1392
}
1391
1393
1392
- final double thumbDelta = (endThumbCenter .dx - startThumbCenter .dx).abs ();
1394
+ final double thumbDelta = (_endThumbCenter .dx - _startThumbCenter .dx).abs ();
1393
1395
1394
1396
final bool isLastThumbStart = _lastThumbSelection == Thumb .start;
1395
1397
final Thumb bottomThumb = isLastThumbStart ? Thumb .end : Thumb .start;
1396
1398
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 ;
1399
1401
final TextPainter bottomLabelPainter = isLastThumbStart ? _endLabelPainter : _startLabelPainter;
1400
1402
final TextPainter topLabelPainter = isLastThumbStart ? _startLabelPainter : _endLabelPainter;
1401
1403
final double bottomValue = isLastThumbStart ? endValue : startValue;
@@ -1441,15 +1443,15 @@ class _RenderRangeSlider extends RenderBox with RelayoutWhenSystemFontsChangeMix
1441
1443
if (shouldPaintValueIndicators) {
1442
1444
final double startOffset = sliderTheme.rangeValueIndicatorShape! .getHorizontalShift (
1443
1445
parentBox: this ,
1444
- center: startThumbCenter ,
1446
+ center: _startThumbCenter ,
1445
1447
labelPainter: _startLabelPainter,
1446
1448
activationAnimation: _valueIndicatorAnimation,
1447
1449
textScaleFactor: textScaleFactor,
1448
1450
sizeWithOverflow: resolvedscreenSize,
1449
1451
);
1450
1452
final double endOffset = sliderTheme.rangeValueIndicatorShape! .getHorizontalShift (
1451
1453
parentBox: this ,
1452
- center: endThumbCenter ,
1454
+ center: _endThumbCenter ,
1453
1455
labelPainter: _endLabelPainter,
1454
1456
activationAnimation: _valueIndicatorAnimation,
1455
1457
textScaleFactor: textScaleFactor,
@@ -1575,8 +1577,16 @@ class _RenderRangeSlider extends RenderBox with RelayoutWhenSystemFontsChangeMix
1575
1577
);
1576
1578
1577
1579
// 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
+ );
1580
1590
switch (textDirection) {
1581
1591
case TextDirection .ltr:
1582
1592
_startSemanticsNode! .rect = leftRect;
0 commit comments