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

Flutter/Dart中如何获取List的深度?求可全局调用的扩展实现

获取Dart嵌套List的深度及全局扩展实现

核心思路

计算嵌套List的深度,核心是递归遍历每个元素:

  • 若当前元素不是List,当前分支深度为1
  • 若元素是List,递归计算该子List的深度后加1(当前层级),最终取所有分支的最大值

全局扩展方法实现

我们可以给Iterable写一个全局扩展,让所有List(包括嵌套的子List)都能直接调用:

extension ListDepthExtension on Iterable {
  int get depth {
    int maxDepth = 1;
    for (final element in this) {
      if (element is Iterable) {
        final elementDepth = element.depth + 1;
        if (elementDepth > maxDepth) {
          maxDepth = elementDepth;
        }
      }
    }
    return maxDepth;
  }
}

使用示例

针对你给出的测试列表:

void main() {
  List testRy = [1,2,[3,4,[5,6],7,[8,[9,91]],10],11,12];
  print(testRy.depth); // 输出:4
}

这个列表最深的分支是[8,[9,91]],层级依次为:

  1. 最外层List
  2. 第二层的[3,4,...]
  3. 第三层的[8,[9,91]]
  4. 第四层的[9,91]
    所以最终深度为4

可选调整

  • 若只想针对List类型生效,可将扩展的Iterable改为List
  • 若仅想统计List的嵌套(排除Set等其他可迭代类型),把element is Iterable改成element is List
  • 空List默认返回深度1(自身作为一个层级),若需特殊处理可在方法内添加判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:19:50