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
相关产品推荐
相关产品推荐

