BlocBuilder中的Flutter Slider循环

时间:2020-06-12 13:33:08

标签: flutter flutter-bloc

我在BlocBuilder中使用了一个滑块,该滑块允许我检索初始值,但是当我想更改滑块的值时,我总是输入LightStateOn条件,而我的值采用state.brightness值。

BlocBuilder<LightBloc, LightState>(
    builder: (context, state) {
  if (state is LightStateOn) {
    this.brightness = state.brightness.toDouble();
    return Slider(
      value: this.brightness,
      min: 0,
      max: 255,
      onChanged: (value) {
        setState(() => this.brightness = value);
      },
    );
    // );
  } else {
    return ...
  }
}),

肯定有些我不理解的东西。有人可以给我解释一下吗?

1 个答案:

答案 0 :(得分:0)

恕我直言,您误解了 BLoC 模式的概念。如果您能分享您的 LightBloc 和 LightStates 代码,那就太好了。

重点是(在此代码中)flutter 仅在构建小部件时检查您的条件 (state is LightStateOn) 我们不知道何时调用 builder 方法!那么我们该怎么办?我们将使用 BlocConsumer。然后我们监听状态变化。当状态改变并调用监听器函数时,flutter 重新构建小部件

太好了,现在如果状态改变,flutter 会重建 UI。例如:

 listener: (context, state) {
            isLightOn = (state is LightStateOn) 
          },

我想告诉您,您需要了解您的集团将控制滑块的值,因此该值可以是类似于 state.brightness(您在您的光状态)。当我们在 this.brightness 方法中更新状态时。您编写它的方式可能有效,但在集团概念中是错误的。

可以是这样的:

onChange:

如果您分享完整的 BLoC 代码和屏幕,我可以为您提供更多帮助!并为您分享解决方案。