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]],层级依次为:
- 最外层List
- 第二层的
[3,4,...] - 第三层的
[8,[9,91]] - 第四层的
[9,91]
所以最终深度为4
可选调整
- 若只想针对List类型生效,可将扩展的
Iterable改为List - 若仅想统计List的嵌套(排除Set等其他可迭代类型),把
element is Iterable改成element is List - 空List默认返回深度1(自身作为一个层级),若需特殊处理可在方法内添加判断
内容的提问来源于stack exchange,提问作者Frankline Sable
相关产品推荐
相关产品推荐

