指定した範囲から値を選ぶ Slider というWidgetを初めて使用した。
デフォルトはこんな感じ
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F52227%2F093275de-8a46-ba80-d30d-78174ceff39b.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=f5b1634f4cc4dac6a373bad24a7db789)
このSliderの色をカスタマイズするとき、**何のプロパティがどこの色を変えられるのか?**がややこしかったので図にまとめた。
![スクリーンショット 2020-02-07 8.47.22.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F52227%2F73e980bf-3812-630a-18ec-34a47cd245bd.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=a4b1b4701afa5e33cd10269043b5340b)
※分かりやすいように各部品に色を指定している
Sliderのコードは以下
SliderTheme(
data: SliderTheme.of(context).copyWith(
trackHeight: 10,
thumbColor: Colors.purpleAccent,
thumbShape: RoundSliderThumbShape(enabledThumbRadius: 12),
valueIndicatorColor: Colors.orange,
overlayColor: Colors.orange.withAlpha(80),
activeTrackColor: Colors.black,
inactiveTrackColor: Colors.amber,
inactiveTickMarkColor: Colors.blue,
activeTickMarkColor: Colors.green,
),
child: Slider(
min: 0,
max: 100,
divisions: 10,
value: _customSliderValue,
label: '${_customSliderValue.floor()}',
onChanged: (d) => setState(() {
_customSliderValue = d;
}),
),
)
上記のSliderTheme.of(context).copyWith
の中身を、MaterialAppのsliderTheme
にそのまま使うことができる。
SliderThemeDataのコード
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
// スライダーのテーマ指定
sliderTheme: SliderThemeData(
trackHeight: 10,
thumbColor: Colors.purpleAccent,
thumbShape: RoundSliderThumbShape(enabledThumbRadius: 12),
valueIndicatorColor: Colors.orange,
overlayColor: Colors.orange.withAlpha(80),
activeTrackColor: Colors.black,
inactiveTrackColor: Colors.amber,
inactiveTickMarkColor: Colors.blue,
activeTickMarkColor: Colors.green,
),
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
使用したコードのgithub
https://github.com/ikemura23/flutter_lab/blob/slider/lib/main.dart