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

Dart列表移除null:有无更优雅的实现方式?

Dart列表移除null值的更优雅写法

你可以用Dart内置的whereType<T>()方法来简化代码,完全省去手动断言的步骤:

List<T> nullFilter<T>(List<T?> list) => list.whereType<T>().toList();

为什么这更优雅?

  • whereType<T>()会自动过滤列表中所有类型不为T的元素,对于T?类型的输入列表来说,就是精准排除null值
  • 方法返回的Iterable<T>是类型安全的,不需要像原代码那样用map((e) => e!)做强制断言,避免了潜在的类型风险
  • 代码结构更简洁,逻辑一目了然

如果想让调用更直观,还可以给List写个扩展方法:

extension NullFilterExtension<T> on List<T?> {
  List<T> removeNulls() => whereType<T>().toList();
}

// 调用示例
final List<String?> mixedList = ["a", null, "b", null];
final List<String> cleanList = mixedList.removeNulls();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:40:41