如何在 GetX/Obx 中使用滑塊小部件?
class Slider1 extends StatelessWidget {
const Slider1({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
SliderController sx = Get.put(SliderController());
return SizedBox(
child: Column(children: [
Obx(
() => Slider(
value: sx.range,
min: 0,
max: 255,
divisions: 255,
label: sx.range.round().toString(),
onChanged: (double value) {
sx.setRange(value);
},
),
)
]),
);
}
}
class SliderController extends GetxController {
double range = 255.obs as double;
void setRange(double range) {
this.range = range;
}
}
像這樣我得到,
_CastError(型別“RxInt”不是型別轉換中“double”型別的子型別)
uj5u.com熱心網友回復:
根據您的實施方式,唯一的錯誤在于變數的初始化。波紋管更改將使其作業。
Obx(
() => Slider(
value: sx.range.value,
min: 0.0, //initialized it to a double
max: 255.0, //initialized it to a double
divisions: 255,
label: sx.range.round().toString(),
onChanged: (double value) {
sx.setRange(value);
},
),
)
控制器的變化。
class SliderController extends GetxController {
Rx<double> range = 255.0.obs; //again initialized it to a Rx<double>
void setRange(double range) {
this.range.value = range; //updating the value of Rx Variable.
}
}
uj5u.com熱心網友回復:
同時我正在嘗試不同的方法
class SliderText extends StatelessWidget {
const SliderText({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return SizedBox(
child: GetBuilder<SliderController>(
init: SliderController(),
builder: (ctrl) => SizedBox(
child: Text('Sliding Value: ${ctrl.range}'),
),
),
);
}
}
//--------------------------------------------------------------
class SliderController extends GetxController {
static SliderController get to => Get.find();
double range = 255;
void setRange(double range) {
this.range = range;
update();
}
}
@Krish Bhanushali,哪個更好?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/387086.html
上一篇:使用按鈕激活文本欄位,getX
下一篇:如何使用JS獲取按鈕的值
