更新控制器在 getx 状态管理中不起作用

问题描述 投票:0回答:1

在我的应用程序中我有这个图标

当用户点击它时,坐标地址将更改为人类可读的地址并隐藏眼睛图标 我正在使用 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秒后“状态更新调用”,地址更改为坐标地址,图标隐藏.
请让我知道该怎么做?

flutter flutter-getx
1个回答
0
投票

我已经浏览了你的代码。

根据您的代码,您没有为此使用 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 包裹整个小部件

© www.soinside.com 2019 - 2024. All rights reserved.