如何禁用Flutter滑块类以防止用户移动它?

时间:2018-10-11 15:40:13

标签: flutter flutter-layout

我希望呈现一个无法移动的颤动滑块,这意味着我希望向滑块传递一个用户无法纯粹为UI可视化更改的初始值?

有没有人有经验将此滑块锁定到位?

感谢您的帮助。

5 个答案:

答案 0 :(得分:2)

为其提供一个值,然后将onChanged:属性设置为null。

onChanged: null

这将禁用滑块。

否则,您可以给max:min:赋予相同的值。不过,在这种情况下,滑块不会变灰,而是保持为零。

答案 1 :(得分:1)

只需将AbsorbPointer包裹在滑块上,如下所示:

AbsorbPointer(
            child: Slider(
              onChanged: (value) => print(value),
              min: 0,
              max: 100,
              divisions: 10,
              value: 30,
            ),
          )

答案 2 :(得分:0)

只需使用SliderTheme:

SliderTheme(data: SliderTheme.of(context).copyWith(
                                  disabledThumbColor:
                                      Theme.of(context).accentColor,
                                  disabledActiveTrackColor:
                                      Theme.of(context).accentColor),
                              child: Slider(
                                divisions: 10,
                                max: 100,
                                value: 10,
                                onChanged: null,
                              ),
                            )

答案 3 :(得分:0)

为了使SliderTheme影响禁用的滑块,您必须覆盖disabled属性。

这是一个简单的例子:

SliderTheme(
  data: SliderTheme.of(context).copyWith(
    disabledActiveTrackColor: Colors.red[700],
    disabledInactiveTrackColor: Colors.red[100],
    disabledThumbColor: Colors.redAccent,
  ),
  child: Slider(
    value: 0.2,
    onChanged: null,
  ),
)

答案 4 :(得分:0)

同样更详细:

var _onChanged;
if (someVariable) {
  _onChanged = (value) => print(value);
}

child: Slider(
  onChanged: _onChanged,
  min: 0,
  max: 100,
  divisions: 10,
  value: 30,
),