flutter - Obx 不更新 RangeSlider GetX
问题描述
声明超出Widget build
范围:
Rx<RangeValues> values = RangeValues(MIN_USD_AMOUNT, MAX_USD_AMOUNT).obs;
Rx<RangeLabels> labels = RangeLabels(MIN_USD_AMOUNT.toString(), MAX_USD_AMOUNT.toString()).obs;
这是在脚手架的容器中:
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;
})),
我的问题:当我更改滑块的值时,我可以看到它在控制台中工作,但视图没有更新。滑块根本没有更新。
解决方案
仅在常规的RangeLabels
.
RxString startLabel = MIN_USD_AMOUNT.toString().obs;
RxString endLabel = MAX_USD_AMOUNT.toString().obs;
在onChanged
滑块中只更新字符串。
controller.startLabel.value = value.start.toString();
controller.endLabel.value = value.end.toString();
假设你已经定义了你的类,整体Obx
看起来像这样。controller
GetX
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 中的值。
推荐阅读
- c# - 在 Angular ASP.NET Core 2.0 应用程序中使用 LinkedIn api 和 Oauth 2.0 进行身份验证
- listview - 如何将列表视图添加到列中,然后将剩余空间(如果有)与列表上方的 1/3 和列表下方的 2/3 分开
- node.js - 将 sqlite 数据库文件发布到 firebase 函数
- android - 离子键盘离子输入焦点中的问题
- python - Python 小部件和 sizepolicy
- java - 谷歌地图移动相机不起作用 - 为什么?
- python - Py_Initialize 后导入模块
- c# - 需要 xamarin android 中的插件 ImageEdit 库的示例
- mysql - 如果我想搜索以 DE-SB 和 DE-TB 开头的 SKU,如何在 SQL 中使用 LIKE 通配符?[] 如何在这里工作?
- terraform - 等待条件时terraform helm释放超时