在我的应用程序中我有这个图标
当用户点击它时,坐标地址将更改为人类可读的地址并隐藏眼睛图标 我正在使用 getx 来更新状态 在此代码中,图标被隐藏,但地址文本没有改变 这是代码:
if (!ctl.isAddressAvailable) // here checking to show the icon
InkWell(
child: Icon(
Icons.remove_red_eye,
color: Colors.white,
),
onTap: () async {
String _returnedAddress =
await Traccar.getAddressByCoorinate(
ctl.deviceLatLang.latitude.toString(),
ctl.deviceLatLang.longitude.toString());
latlang.value = _returnedAddress; // i am updating the address text
print(latlang);
if (_returnedAddress.isNotEmpty) {
ctl.isAddressAvailable = true; // here hiding the icons
}
ctl.update(); // here updating state
},
),
问题在于
ctl.update();
当我评论它时,地址也会更改,但图标并未隐藏 另外,我将
ctl.update():
放入延迟功能,在第一个地址更改为处女膜可读地址时,图标是钢的,因为状态尚未更新,3秒后“状态更新调用”,地址更改为坐标地址,图标隐藏.我已经浏览了你的代码。
根据您的代码,您没有为此使用 RxBool 变量,而是仅使用 bool isAddressAvailable 请尝试实施这个
RxBool isAddressAvailable = false.obs;
if (!ctl.isAddressAvailable.value) 墨水井( 孩子:图标( Icons.remove_red_eye, 颜色: 颜色.白色, ), onTap: () 异步 { 字符串_返回地址 = 等待 Traccar.getAddressByCoorinate( ctl.deviceLatLang.latitude.toString(), ctl.deviceLatLang.longitude.toString()); latlang.value = _returnedAddress; // 我正在更新地址文本 打印(拉特兰语); 如果(_returnedAddress.isNotEmpty){ ctl.isAddressAvailable.value = true; // 这里隐藏图标 } ctl.update(); // 这里更新状态 }, ),
并用 Obx 包裹整个小部件