You need to enable JavaScript to run this app. GetX使用Obx无法自动刷新ReorderableSliverList列表问题求助
优惠活动
大模型
产品
解决方案
定价
更多

GetX使用Obx无法自动刷新ReorderableSliverList列表问题求助

问题根因
  • Obx仅包裹了列表单个条目的构建逻辑,只能响应单条数据的变化,ReorderableSliverList的childCount参数处于Obx监听范围外,数组长度变化时组件无法感知,不会新增渲染条目
  • Reorderable系列组件要求每个子项必须携带唯一Key,否则无法识别列表结构的变动,也会导致刷新异常
修复代码

将Obx层级上移包裹整个列表组件,同时给子项传入唯一Key即可,参考代码如下:

Obx(
  () => controller.products.isEmpty
      ? const Center(child: Text("BELUM ADA DATA"))
      : ReorderableSliverList(
          delegate: ReorderableSliverChildBuilderDelegate(
            (BuildContext context, int index) {
              final data = controller.products[index];
              // 传入唯一Key,满足Reorderable组件要求
              return ItemView(data, key: ValueKey(data.id));
            },
            childCount: controller.products.length,
          ),
          onReorder: _onReorder,
        ),
)
注意事项
  • 外层Obx已经可以监听products数组的所有变动(新增/删除/重排序),无需在条目构建逻辑中重复嵌套Obx
  • 不要使用数组下标作为子项的Key,避免列表重排序后出现渲染错乱的问题

内容的提问来源于stack exchange,提问作者scarlet pro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 05:27:02