我正在使用应用程序的开关来控制机器应开启的天气。但是,在发送验证消息之前,我不希望它切换。开关的值基于外部服务器,但是仅当用户切换开关并且他们接受验证消息时,才需要更改开关。
如果轻按了交换机,则会显示验证过程,按true会切换开关并更新服务器,而按false不会切换开关或更新服务器。但是,如果滑动开关,则会弹出验证消息,如果按false,则开关(在视觉上)将保持在打开位置。但只要在屏幕上即可。
我尝试更改传递的值,并在开关的onchanged标签内调用setState((){})。
这是我的交换机代码。它现在位于无状态小部件中,如果使用正确名称的http.get和testing = true,widget.currentPartsList [index] .testing将会更改。
Switch(
value: widget.currentPartsList[index].testing,
dragStartBehavior: DragStartBehavior.down,
onChanged: (val) async {
String url = await getTestURL();
if (val) {
if (await _verifyTesting(context)) {
await http.get(
"$url/tags?name=${widget.currentPartsList[index].name}&testing=true");
} else {
setState(() {
widget.currentPartsList[index].testing =
true;
widget.currentPartsList[index].testing =
false;
});
}
} else {
await http.get(
"$url/tags?name=${widget.currentPartsList[index].name}&testing=false");
}
},
),
_verifyTesting是一个showDialog小部件。和功能,我会期望的。