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

Flutter中如何将一个完整列表添加到另一个列表顶部

Dart 列表指定位置批量插入实现方案

你需要的将列表A整体插入列表B顶部的需求,不需要创建第三个中转列表,也不需要手写循环,Dart 内置的insertAll方法可以直接实现你要的addAllAt效果。

方法用法

insertAll是List类自带的实例方法,签名为:

void insertAll(int index, Iterable<E> iterable)

作用是在指定的索引位置,批量插入传入的可迭代集合的所有元素,只会修改当前调用方法的列表,不会改动作为参数传入的集合本身。

要实现把listA插到listB顶部,只需要在索引0的位置调用该方法即可:

listA = [1, 2, 3];
listB = [4, 5, 6];

listB.insertAll(0, listA);

// 运行结果
// listA: [1, 2, 3]  原列表完整保留,可在其他视图独立使用
// listB: [1, 2, 3, 4, 5, 6]  直接得到A拼接B的目标结果

方案对比

  • 你之前使用的默认addAll方法,本质等价于listB.insertAll(listB.length, listA),固定把元素追加到列表尾部,所以会得到[4,5,6,1,2,3]的反向拼接结果。
  • 新建第三个列表listC中转的方案,会产生两次额外的全量列表拷贝,还会生成临时对象等待GC回收,性能远低于直接调用insertAll的方案。
  • 不需要引入第三方库,不需要手写遍历插入逻辑,代码简洁度和运行效率都是最优的。

注意:该方法仅适用于可增长长度的列表,如果你使用的是List.filled生成的固定长度列表,调用任何增减元素的方法都会抛出异常,这种场景下只能通过生成新列表的方式完成拼接。日常业务开发中通过[]字面量创建的列表默认都是可增长列表,可以直接使用该方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:21:25