所以我必须创建一个愿望清单,并且我正在从 api 获取数据。如果 api 返回 outofstock = true ,我将需要隐藏“添加到购物车”按钮,如果 api 返回有库存,我将需要显示该按钮。问题是在 getx 中我们需要 obs 变量来改变状态,如果我创建一个 obs 变量并每次更新它的值,它仍然采用初始值。
我尝试创建一个 obs 变量来收集来自 api 的响应并将其保存到 obs 变量,然后使用该变量检查是否有库存,然后显示按钮,否则没有,但每次帮助时 obs 变量的值都是 false
ListView.builder( physics: const NeverScrollableScrollPhysics(), shrinkWrap: true, itemCount: controller.wishlistData.length, itemBuilder: (BuildContext context, int index) { final data =controller.wishlistData[index]; controller.outOfStockFlag.value = data.variantMeta!.bOutOfStockFlag!;
controller.outOfStockFlag 的值最初设置为 true,然后对于下一个构建,它仍然是 staticall true,作为响应,我得到 true 和 false
当你从api获取数据时,你需要检查更改obs变量。 例如:
void _checkData() async {
var data = await ...;
if(...) outofstock.value = true;
else outofstock.value = false;
update();
}