Skip to content

Commit 75fec89

Browse files
authored
Propagate theme typography to slider label (flutter#6629)
1 parent 67f5910 commit 75fec89

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

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

+19-2
Original file line numberDiff line numberDiff line change
@@ -139,11 +139,13 @@ class _SliderState extends State<Slider> with TickerProviderStateMixin {
139139
@override
140140
Widget build(BuildContext context) {
141141
assert(debugCheckHasMaterial(context));
142+
ThemeData theme = Theme.of(context);
142143
return new _SliderRenderObjectWidget(
143144
value: (config.value - config.min) / (config.max - config.min),
144145
divisions: config.divisions,
145146
label: config.label,
146-
activeColor: config.activeColor ?? Theme.of(context).accentColor,
147+
activeColor: config.activeColor ?? theme.accentColor,
148+
textTheme: theme.primaryTextTheme,
147149
onChanged: config.onChanged != null ? _handleChanged : null,
148150
vsync: this,
149151
);
@@ -157,6 +159,7 @@ class _SliderRenderObjectWidget extends LeafRenderObjectWidget {
157159
this.divisions,
158160
this.label,
159161
this.activeColor,
162+
this.textTheme,
160163
this.onChanged,
161164
this.vsync,
162165
}) : super(key: key);
@@ -165,6 +168,7 @@ class _SliderRenderObjectWidget extends LeafRenderObjectWidget {
165168
final int divisions;
166169
final String label;
167170
final Color activeColor;
171+
final TextTheme textTheme;
168172
final ValueChanged<double> onChanged;
169173
final TickerProvider vsync;
170174

@@ -174,6 +178,7 @@ class _SliderRenderObjectWidget extends LeafRenderObjectWidget {
174178
divisions: divisions,
175179
label: label,
176180
activeColor: activeColor,
181+
textTheme: textTheme,
177182
onChanged: onChanged,
178183
vsync: vsync,
179184
);
@@ -185,6 +190,7 @@ class _SliderRenderObjectWidget extends LeafRenderObjectWidget {
185190
..divisions = divisions
186191
..label = label
187192
..activeColor = activeColor
193+
..textTheme = textTheme
188194
..onChanged = onChanged;
189195
// Ticker provider cannot change since there's a 1:1 relationship between
190196
// the _SliderRenderObjectWidget object and the _SliderState object.
@@ -229,11 +235,13 @@ class _RenderSlider extends RenderConstrainedBox implements SemanticsActionHandl
229235
int divisions,
230236
String label,
231237
Color activeColor,
238+
TextTheme textTheme,
232239
this.onChanged,
233240
TickerProvider vsync,
234241
}) : _value = value,
235242
_divisions = divisions,
236243
_activeColor = activeColor,
244+
_textTheme = textTheme,
237245
super(additionalConstraints: _getAdditionalConstraints(label)) {
238246
assert(value != null && value >= 0.0 && value <= 1.0);
239247
this.label = label;
@@ -290,7 +298,7 @@ class _RenderSlider extends RenderConstrainedBox implements SemanticsActionHandl
290298
// https://github.com/flutter/flutter/issues/5938
291299
_labelPainter
292300
..text = new TextSpan(
293-
style: Typography.white.body1.copyWith(fontSize: 10.0),
301+
style: _textTheme.body1.copyWith(fontSize: 10.0),
294302
text: newLabel
295303
)
296304
..layout();
@@ -309,6 +317,15 @@ class _RenderSlider extends RenderConstrainedBox implements SemanticsActionHandl
309317
markNeedsPaint();
310318
}
311319

320+
TextTheme get textTheme => _textTheme;
321+
TextTheme _textTheme;
322+
set textTheme(TextTheme value) {
323+
if (value == _textTheme)
324+
return;
325+
_textTheme = value;
326+
markNeedsPaint();
327+
}
328+
312329
ValueChanged<double> onChanged;
313330

314331
double get _trackLength => size.width - 2.0 * _kReactionRadius;

0 commit comments

Comments
 (0)