跳到主内容

collection_methods_unrelated_type

参数类型 '{0}' 与 '{1}' 不相关。

描述

#

当核心库中的某些方法使用不合适的参数类型调用时,分析器会生成此诊断。这些方法的参数类型不够具体,无法通过正常的类型检查捕获错误。

检查的参数包括:

  • Iterable<E>.contains 方法的参数应与 E 相关
  • List<E>.remove 方法的参数应与 E 相关
  • Map<K, V>.containsKey 方法的参数应与 K 相关
  • Map<K, V>.containsValue 方法的参数应与 V 相关
  • Map<K, V>.remove 方法的参数应与 K 相关
  • Map<K, V>.[] 方法的参数应与 K 相关
  • Queue<E>.remove 方法的参数应与 E 相关
  • Set<E>.lookup 方法的参数应与 E 相关
  • Set<E>.remove 方法的参数应与 E 相关

示例

#

以下代码会生成此诊断,因为 contains 方法的参数是 String 类型,它无法赋值给列表 l 的元素类型 int

dart
bool f(List<int> l)  => l.contains('1');

常见修复方法

#

如果元素类型是正确的,则更改参数使其具有相同的类型

dart
bool f(List<int> l)  => l.contains(1);

如果参数类型是正确的,则更改元素类型

dart
bool f(List<String> l)  => l.contains('1');