如果Getx List变了但界面没有变,可能有以下几种情况:

  1. 没有使用Obx

确保在Widget中使用了Obx来观察List的变化。

示例代码:

class MyWidget extends StatelessWidget {
  final myList = Get.find<MyController>().myList;

  @override
  Widget build(BuildContext context) {
    return Obx(() => ListView.builder(
          itemCount: myList.length,
          itemBuilder: (context, index) {
            return Text(myList[index]);
          },
        ));
  }
}
  1. 没有使用List的obs方法

如果List的某个元素发生了变化,需要使用List的obs方法来使得List本身也能够被观察到。

示例代码:

class MyController extends GetxController {
  final myList = ['A', 'B', 'C'].obs;

  void changeList() {
    myList[0] = 'D';
  }
}
  1. 没有触发更新

如果List的变化不是由GetxController触发的,可能需要手动触发更新。

示例代码:

class MyController extends GetxController {
  final myList = ['A', 'B', 'C'].obs;

  void changeList() {
    myList[0] = 'D';

    // 手动触发更新
    myList.refresh();
  }
}
Flutter Getx List更新后界面不变化?常见问题排查指南

原文地址: https://www.cveoy.top/t/topic/lBl2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录