dart - Flutter - Slider 交互结束后如何运行方法?

我目前正在学习 Flutter,在与 slider 的交互结束后显示 Snackbar 时遇到了一些问题(换句话说,最终值是在用户将手指从 slider 上移开时设置的)。我无法在 onChange 中调用我的 _showSnackBar() 方法,因为 snackbar 被创建并显示了很多次,一个接一个。

只有在交互完成后我才能调用方法吗?我正在考虑发出拉取请求并添加类似 onInteractionEnded 回调属性的内容,但我想先找出另一种方法。

这是我的代码供引用。

class _MySliderState extends State<MySlider> {

  int _value = 2;

  @override
  Widget build(BuildContext context) {
    return Slider(
      min: 0.0,
      max: 4.0,
      divisions: 4,
      value: (_value * 1.0),
      onChanged: (double value) {
          setState(() {
            _value = value ~/ 1;
          });
          _showSnackBar();
      },
    );
  }

  void _showSnackBar() {
    var snackbar = SnackBar(content: const Text('Slider value changed'));
    Scaffold.of(context).showSnackBar(snackbar);
  }
}

谢谢。

最佳答案

onChangeStartonChangeEnd 最近被添加到 Slider

https://github.com/flutter/flutter/pull/17298

更改应该已经在 master 中可用。

https://stackoverflow.com/questions/50307384/

相关文章:

visual-studio-code - Flutter:具有@override 列表的 VSCod

dart - Flutter:在第一次加载时将数据预加载到 Firestore 本地缓存中

android - 如何在 flutter 和平台之间传输麦克风数据?

android-studio - Android Studio 在创建新的 Flutter 项目时卡

cookies - Dart/Flutter 身份验证实现

Flutter - 加载 Assets 进行测试

dart - 如何获取当前小部件的偏移量

dart - 如何运行 `source_gen` ?

firebase - Flutter cloud_firestore 插件 Android 上的事务

dart - flutter 热重载