Можно ли изменить цвет метки слайдера во Flutter?
В конструкторе класса Slider такого поля нет.





Я обнаружил, что это указано в классе Slider над полем label.
The label is rendered using the active [ThemeData]'s [ThemeData.accentTextTheme.bodyText2] text style.
При создании виджета App необходимо указать accentTextTheme и поле bodyText2.
return MaterialApp(
theme: ThemeData(
accentTextTheme: TextTheme(bodyText2: TextStyle(color: Colors.white)),
),
home: MyHomePage(),
);
это один из способов сделать это, но это изменит всю россыпь, где accentTextTheme это используется, вы можете использовать это:
Theme(
child: yourSlide,
data: Theme.of(context).copyWith(
accentTextTheme: TextTheme(bodyText2: TextStyle(color: Colors.white)),
),
)
Таким образом, вы измените только тот виджет, который вам нужно изменить, а не весь accentTextTheme, который можно использовать для других, которые, возможно, вам не нужно менять.
body2 устарел. вместо этого используйте bodyText2.
В соответствии с API Flutter используйте valueIndicatorColor, который является свойством SliderThemeData. Как упомянуто здесь, SliderClass а здесь SliderThemeДанные
Простая демонстрация: установить локальные переменные:
double feet = 0;
String heightInFeet = "null";
int height = 180;
и вот ваше индивидуальное решение для слайдера
SliderTheme(
data: SliderTheme.of(context).copyWith(
valueIndicatorColor: Colors.blue, // This is what you are asking for
inactiveTrackColor: Color(0xFF8D8E98), // Custom Gray Color
activeTrackColor: Colors.white,
thumbColor: Colors.red,
overlayColor: Color(0x29EB1555), // Custom Thumb overlay Color
thumbShape:
RoundSliderThumbShape(enabledThumbRadius: 12.0),
overlayShape:
RoundSliderOverlayShape(overlayRadius: 20.0),
),
child: Slider(
value: height.toDouble(),
onChanged: (double newValue) {
setState(() {
height = newValue.toInt();
feet = (height / 30.48);
heightInFeet = feet.toStringAsFixed(2) + " feet";
});
},
divisions: 220,
label: heightInFeet,
min: 90.0,
max: 305.0,
),
)
и если вы хотите изменить цвет текста, шрифт текста и т. д., используйте
valueIndicatorTextStyle: TextStyle(
color: Colors.amber, letterSpacing: 2.0)
в SliderThemeData
Используйте SliderThemeData:
sliderTheme: ThemeData.dark().sliderTheme.copyWith(
valueIndicatorColor: _primaryColor,
valueIndicatorTextStyle: TextStyle(
backgroundColor: Colors.transparent
)
)
body2 устарел. Вместо этого используйте bodyText2