如何抑制depend_on_referenced_packages只是为了一个特定的导入,而不是整个文件?



升级到Flutter 3.0后,我开始在运行flutter analyze时得到很多depend_on_referenced_packageslint问题。如果我删除报告的导入,编译就会中断。大多数问题是与package:collection/collection.dart提供扩展方法。

目前我能找到的最好方法是通过添加// ignore_for_file: depend_on_referenced_packages来抑制受影响文件的这种lint。然而,我喜欢这个lint(一般来说,我希望尽可能多地启用lint),那么是否有一种方法可以只对特定的导入抑制lint,而不是对文件中的所有导入抑制lint ?

pubspec.yaml相关章节:

...
environment:
sdk: ">=2.17.1 <3.0.0"
flutter: ">=3.0.1"
...
dev_dependencies:
flutter_lints: ^2.0.1

运行:

$ flutter analyze
...
info • Depend on referenced packages • lib/preferences/palette_spec.dart:3:8 • depend_on_referenced_packages
info • Depend on referenced packages • lib/ui/parts/circular_menu.dart:5:8 • depend_on_referenced_packages
...

源代码示例:

database_utils.dart(firstWhereOrNull is from collection.dart):

...
import 'package:collection/collection.dart';
...
Activity? _getActivityById(int id) {
return activities.firstWhereOrNull((element) => element.id == id);
}
...
Record? _getRecordById(int id) {
return records.firstWhereOrNull((element) => element.id == id);
}

palette_spec.dart(forEachIndexed is from collection.dart):

...
import 'package:collection/collection.dart';
...
paletteStr.split(",").forEachIndexed((index, colorStr) {
...
});

circular_menu.dart:

...
import 'package:vector_math/vector_math.dart' as vector;
...
final angle = vector.radians(90.0 / (widget.children.length - 1) * index + angleFix);

注意:根本原因是集合作为传递依赖项引入。

原来我误解了绒线。对peter的解决方案的解释:当他说"如果您依赖于传递依赖,就会报告lint"时;它意味着在代码的某个地方,我有一个import,它从那个依赖项中导入东西。但是在lint的时候,这种依赖只是可传递的,不是直接的。因此,如果我决定-无论出于什么原因-不依赖带来该导入的软件包,那么我就会在导入时突然出现错误。lint试图使依赖关系图更直接。

如果您依赖于传递依赖项,则会报告此lint。在你的公共规格书里有吗?Yaml定义的集合?


dependencies:
collection: ^1.16.0

我有同样的问题,但在定义依赖后,lint问题消失了。

最新更新