首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Obx不更新RangeSlider GetX

Obx不更新RangeSlider GetX
EN

Stack Overflow用户
提问于 2021-10-11 09:28:43
回答 1查看 84关注 0票数 0

声明超出Widget build作用域:

代码语言:javascript
复制
Rx<RangeValues> values = RangeValues(MIN_USD_AMOUNT, MAX_USD_AMOUNT).obs;
Rx<RangeLabels> labels = RangeLabels(MIN_USD_AMOUNT.toString(), MAX_USD_AMOUNT.toString()).obs;

这是在脚手架中的容器中:

代码语言:javascript
复制
Obx(() => RangeSlider(
                divisions: 5,
                activeColor: Colors.red[700],
                inactiveColor: Colors.red[300],
                max: MAX_USD_AMOUNT,
                min: MIN_USD_AMOUNT,
                values: values.value,
                labels: labels.value,
                onChanged: (value) {
                  print("START: ${value.start}, End: ${value.end}");
                  this.values = values;
                  this.labels = RangeLabels(
                          "${value.start.toInt().toString()} USD",
                          "${value.end.toInt().toString()} USD")
                      .obs;
                })),

我的问题:当我更改滑块的值时,我可以看到它在控制台中工作,但视图没有更新。滑块根本没有更新。

EN

回答 1

Stack Overflow用户

发布于 2021-10-11 18:19:31

在常规RangeLabels中更新几个RxStrings可能会更容易一些。

代码语言:javascript
复制
  RxString startLabel = MIN_USD_AMOUNT.toString().obs;
  RxString endLabel = MAX_USD_AMOUNT.toString().obs;

在滑块的onChanged中,只需更新字符串。

代码语言:javascript
复制
  controller.startLabel.value = value.start.toString();
  controller.endLabel.value = value.end.toString();

假设您已经定义了GetX类的controller,则整个Obx将如下所示。

代码语言:javascript
复制
 Obx(
   () => RangeSlider(
     divisions: 5,
     activeColor: Colors.red[700],
     inactiveColor: Colors.red[300],
     min: MIN_USD_AMOUNT,
     max: MAX_USD_AMOUNT,
     values: controller.values.value,
     labels: RangeLabels(
     controller.startLabel.value, controller.endLabel.value),
     onChanged: (value) {
        controller.startLabel.value = value.start.toString();
        controller.endLabel.value = value.end.toString();
        controller.values.value = value;
                },
              ),
            ),

这将更新UI中的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69523947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档