You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter ListView添加新项:如何实现前一项为空时禁止创建下一项

问题分析

你现有实现存在2个核心逻辑错误:

  • 仅校验了列表第一个条目list[0]是否为空,完全不符合「校验上一个(即最后一个)条目是否为空」的需求
  • 手动执行list.length++是冗余操作,调用add()方法时会自动扩容列表,这行代码反而会导致列表多生成一个空的默认元素

修复后代码

void addSubItem() {
    final list = List<TaskSubItem>.from(state.list);
    // 非空列表需要校验最后一个条目的name是否不为空,空列表可直接新增第一个条目
    if (list.isEmpty || list.last.name.isNotEmpty) {
      list.add(
        const TaskSubItem(
          name: '',
          status: '1',
        ),
      );
      state = state.copyWith(
        list: list,
      );
    }
}

逻辑说明

  • 新增前先做判断:如果列表本身为空(还没有任何条目),或者列表最后一个条目的name字段不为空,才允许执行新增操作
  • 不符合条件的场景直接跳过新增逻辑,自然实现了「上一个条目为空时禁止创建新条目」的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:48:00