目录

collection_methods_unrelated_type

Invocation of various collection methods with arguments of unrelated types.

此规则自 Dart 2.19 版本起可用。

_规则集:core , recommended , flutter _

详情

#

DON'T invoke certain collection method with an argument with an unrelated type.

Doing this will invoke == on the collection's elements and most likely will return false.

An argument passed to a collection method should relate to the collection type as follows:

  • an argument to Iterable<E>.contains should be related to E
  • an argument to List<E>.remove should be related to E
  • an argument to Map<K, V>.containsKey should be related to K
  • an argument to Map<K, V>.containsValue should be related to V
  • an argument to Map<K, V>.remove should be related to K
  • an argument to Map<K, V>.[] should be related to K
  • an argument to Queue<E>.remove should be related to E
  • an argument to Set<E>.lookup should be related to E
  • an argument to Set<E>.remove should be related to E

BAD:

dart
void someFunction() {
  var list = <int>[];
  if (list.contains('1')) print('someFunction'); // LINT
}

BAD:

dart
void someFunction() {
  var set = <int>{};
  set.remove('1'); // LINT
}

GOOD:

dart
void someFunction() {
  var list = <int>[];
  if (list.contains(1)) print('someFunction'); // OK
}

GOOD:

dart
void someFunction() {
  var set = <int>{};
  set.remove(1); // OK
}

使用方法

#

要启用 collection_methods_unrelated_type 规则,请在你的 analysis_options.yaml 文件中,在 linter > rules 下添加 collection_methods_unrelated_type

analysis_options.yaml
yaml
linter:
  rules:
    - collection_methods_unrelated_type