Skip to content

Commit 0d3d8d4

Browse files
[framework] respect debugDisableShadows in slider thumbs (#105467)
1 parent 9f73561 commit 0d3d8d4

File tree

4 files changed

+867
-740
lines changed

4 files changed

+867
-740
lines changed

packages/flutter/lib/src/material/slider_theme.dart

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2366,7 +2366,19 @@ class RoundSliderThumbShape extends SliderComponentShape {
23662366
final double evaluatedElevation = elevationTween.evaluate(activationAnimation);
23672367
final Path path = Path()
23682368
..addArc(Rect.fromCenter(center: center, width: 2 * radius, height: 2 * radius), 0, math.pi * 2);
2369-
canvas.drawShadow(path, Colors.black, evaluatedElevation, true);
2369+
2370+
bool paintShadows = true;
2371+
assert(() {
2372+
if (debugDisableShadows) {
2373+
_debugDrawShadow(canvas, path, evaluatedElevation);
2374+
paintShadows = false;
2375+
}
2376+
return true;
2377+
}());
2378+
2379+
if (paintShadows) {
2380+
canvas.drawShadow(path, Colors.black, evaluatedElevation, true);
2381+
}
23702382

23712383
canvas.drawCircle(
23722384
center,
@@ -2475,7 +2487,19 @@ class RoundRangeSliderThumbShape extends RangeSliderThumbShape {
24752487
final double evaluatedElevation = isPressed! ? elevationTween.evaluate(activationAnimation) : elevation;
24762488
final Path shadowPath = Path()
24772489
..addArc(Rect.fromCenter(center: center, width: 2 * radius, height: 2 * radius), 0, math.pi * 2);
2478-
canvas.drawShadow(shadowPath, Colors.black, evaluatedElevation, true);
2490+
2491+
bool paintShadows = true;
2492+
assert(() {
2493+
if (debugDisableShadows) {
2494+
_debugDrawShadow(canvas, shadowPath, evaluatedElevation);
2495+
paintShadows = false;
2496+
}
2497+
return true;
2498+
}());
2499+
2500+
if (paintShadows) {
2501+
canvas.drawShadow(shadowPath, Colors.black, evaluatedElevation, true);
2502+
}
24792503

24802504
canvas.drawCircle(
24812505
center,
@@ -3359,3 +3383,15 @@ class RangeLabels {
33593383
return '${objectRuntimeType(this, 'RangeLabels')}($start, $end)';
33603384
}
33613385
}
3386+
3387+
void _debugDrawShadow(Canvas canvas, Path path, double elevation) {
3388+
if (elevation > 0.0) {
3389+
canvas.drawPath(
3390+
path,
3391+
Paint()
3392+
..color = Colors.black
3393+
..style = PaintingStyle.stroke
3394+
..strokeWidth = elevation * 2.0,
3395+
);
3396+
}
3397+
}

packages/flutter/test/material/range_slider_test.dart

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1276,8 +1276,10 @@ void main() {
12761276
expect(
12771277
valueIndicatorBox,
12781278
paints
1279+
..path(color: Colors.black) // shadow
1280+
..path(color: Colors.black) // shadow
12791281
..path(color: sliderTheme.valueIndicatorColor)
1280-
..paragraph(),
1282+
..paragraph()
12811283
);
12821284
await gesture.up();
12831285
// Wait for value indicator animation to finish.
@@ -1360,7 +1362,7 @@ void main() {
13601362
);
13611363

13621364
// Represents the Raised Button and Range Slider.
1363-
expect(valueIndicatorBox, paintsExactlyCountTimes(#drawPath, 4));
1365+
expect(valueIndicatorBox, paintsExactlyCountTimes(#drawPath, 6));
13641366
expect(valueIndicatorBox, paintsExactlyCountTimes(#drawParagraph, 3));
13651367

13661368
await tester.tap(find.text('Next'));
@@ -1370,11 +1372,11 @@ void main() {
13701372
expect(
13711373
valueIndicatorBox,
13721374
isNot(
1373-
paints
1374-
..path(color: fillColor)
1375-
..paragraph()
1376-
..path(color: fillColor)
1377-
..paragraph(),
1375+
paints
1376+
..path(color: fillColor)
1377+
..paragraph()
1378+
..path(color: fillColor)
1379+
..paragraph(),
13781380
),
13791381
);
13801382

@@ -1519,6 +1521,8 @@ void main() {
15191521
expect(
15201522
valueIndicatorBox,
15211523
paints
1524+
..path(color: Colors.black) // shadow
1525+
..path(color: Colors.black) // shadow
15221526
..path(color: sliderTheme.valueIndicatorColor)
15231527
..paragraph(),
15241528
);
@@ -1594,6 +1598,8 @@ void main() {
15941598
expect(
15951599
valueIndicatorBox,
15961600
paints
1601+
..path(color: Colors.black) // shadow
1602+
..path(color: Colors.black) // shadow
15971603
..path(color: sliderTheme.valueIndicatorColor)
15981604
..paragraph(),
15991605
);

0 commit comments

Comments
 (0)