Flutter - 删除 Slider 中的默认填充

标签 flutter

我想知道如何删除 Flutter Slider 中的默认填充
当前输出是这样的,默认填充滑块清晰可见
enter image description here
这是我的代码::

                    Positioned(
                      child: Align(
                        alignment: Alignment.bottomLeft,
                        child: SliderTheme(
                            data: SliderTheme.of(context).copyWith(
                              trackHeight: 2.0,
                              thumbColor: Colors.transparent,
                              thumbShape: RoundSliderThumbShape(enabledThumbRadius: 0.0),
                            ),
                            child: Container(
                                width: 380.0,
                                height: 20.0,
                                padding: EdgeInsets.all(0.0),
                                decoration: BoxDecoration(
                                  border: Border.all(color: Colors.blueAccent)
                                ),
                                child: Slider(
                                  value: 50,
                                  min: 1,
                                  max: 100,
                                  divisions: 100,
                                  activeColor: colors.primaryRed,
                                  inactiveColor: Colors.white,
                                  onChanged: (double newValue) {
                                    print(newValue);
                                  },
                                )
                            )
                        ),
                      ),
                    )

最佳答案

您可以使用自定义 trackShape 修复它,如下所示:
将此行添加到 SliderTheme 数据:

trackShape: CustomTrackShape(),
然后在 CustomTrackShape() 中,您必须编写以下代码:
class CustomTrackShape extends RoundedRectSliderTrackShape {Rect getPreferredRect({
@required RenderBox parentBox,
Offset offset = Offset.zero,
@required SliderThemeData sliderTheme,
bool isEnabled = false,
bool isDiscrete = false,}) {final double trackHeight = sliderTheme.trackHeight;
final double trackLeft = offset.dx;
final double trackTop = offset.dy + (parentBox.size.height - trackHeight) / 2;
final double trackWidth = parentBox.size.width;
return Rect.fromLTWH(trackLeft, trackTop, trackWidth, trackHeight);}}
enter image description here

关于Flutter - 删除 Slider 中的默认填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65661119/

相关文章:

flutter - flutter :父部件重建后,子部件无法重建吗?

flutter : Card with Gridview

flutter - 从 Hive 盒中删除的对象仍会加载到内存中

animation - 如何在 Flutter 中为互换小部件制作动画?

Flutter音频播放器音频不播放

android - 'LoginBloc' 不扩展 'Cubit<LoginState>'

flutter - 在 bloc 模式上打开抽屉

flutter - 在 onChanged TextForm 字段值中将 String 更改为 int

android - flutter :将所有小部件排列成行

flutter - 在 Flutter 中将字符串解析为小部件