Dart 警告';导入的库在不使用时具有相同的名称;
我在一个类中有以下导入语句Dart 警告';导入的库在不使用时具有相同的名称;,dart,Dart,我在一个类中有以下导入语句 import'package:dart_web_toolkit/ui.dart'; 将“../util/flex_table_builder.dart”作为ftBldr导入; 导入“../factors\u list\u view.dart”; 类中介因子视图扩展了复合 { //... } 但是,最后一个导入状态会标记警告: The different imported libraries 'flex_table_builder.dart' and 'factor
import'package:dart_web_toolkit/ui.dart';
将“../util/flex_table_builder.dart”作为ftBldr导入;
导入“../factors\u list\u view.dart”;
类中介因子视图扩展了复合
{
//...
}
但是,最后一个导入状态会标记警告:
The different imported libraries 'flex_table_builder.dart' and 'factors_list_view.dart' should not have the same name
这些名称非常不同,在我更新到最新的Dart编辑器后,我看到这一点在我的代码中不断重复。这是一个错误吗?请确保为每个文件指定了库名称。文件的第一行应该是:
libraryfoo;
您应该为所使用的每个库使用不同的名称。库名称由library
指令指定,但匿名库被视为具有相同的名称,这就是警告的来源
在中,输入两个同名库是一个警告
您可以在下面的中阅读有关如何使用库的更多信息
对于错误:
导入的不同库start_view.dart和duration_view.dart不应具有相同的名称
您应该在每个导入的dart文件中定义不同的库名称
另外一个注意事项是,您应该使用
import'package:epimss/shared.dart'代码>而不是导入“packages/epims/shared.dart”代码>和导入“site_view.dart”代码>而不是import./site\u view.dart'代码>警告正确地指示存在问题
正确的解决方案取决于Dart文件在概念上是相互独立的还是相互关联的
不同的库
如果它们在概念上是分开的,那么它们应该被定义为属于具有不同库名称的不同库
import
命令用于引用来自不同库的编译单元,而不是属于同一库的编译单元。它希望每个库都有一个唯一的库名
如果Dart文件被视为库(即,import
语句的主题),并且没有显式命名,则其隐式名称为空字符串。在本例中,这两个文件都被视为库,它抱怨存在两个同名(空字符串)的库
要使其作为单独的库工作,请为其指定不同的名称:
首要文件:
import 'foo.dart';
import 'bar.dart';
library baz;
part 'foo.dart';
part 'bar.dart';
foo.dart:
library foo;
part of baz;
条形省道:
library bar;
part of baz;
同一库的一部分
但如果它们相关,则不应将其作为库引用。也就是说,不要使用import命令。使用part
命令,该命令将Dart文件视为属于同一库的编译单元
首要文件:
import 'foo.dart';
import 'bar.dart';
library baz;
part 'foo.dart';
part 'bar.dart';
foo.dart:
library foo;
part of baz;
条形省道:
library bar;
part of baz;
只有顶部库文件才能包含部分
语句。其他文件中不需要(也不能有)part
语句,即使它们相互引用定义。如果有多个文件,只需将它们全部列在顶部库文件中(按任意顺序)
尽管库的隐式名称是空字符串,但当涉及多个部分时,无法使用该名称:因此,即使这些文件永远不会作为库导入,您仍然需要显式为其指定库名称
始终记住:import
和part
语句与C预处理器中的#include
宏非常不同。库名称是什么?上面使用的唯一库是第一个导入,其库名称是dart\U web\U toolkit。其他两个导入是我创建的本地dart src文件。很高兴提供帮助:)如果问题得到解决,请将答案标记为已解决。非常感谢。但是这个问题只是在我更新到当前的Dart编辑器之后才出现的。以前一切都很好。另一件事是上面的第二个和第三个导入不是库,它们是我在lib目录之外创建的dart源文件。你还认为我应该把我所有的文件放在一个特定的图书馆吗。我尝试过这样做,但尽管我在生成的包中看到了库名称,但每当我尝试以标准方式引用它们时,代码总是失败。感谢您的帮助。这取决于您决定它们在逻辑上是自己的库还是主库的一部分(您是否希望在其他库中重用代码?)。如果它们不是自己的库,则无需导入任何内容。在我的更新之前,一切都正常。我不知道我是不是做错了什么。即使在同一目录中存在两个.dart文件,我也必须有一个import语句来引用该文件而不会出错。有没有其他机制可以做到这一点?感谢最新更新包含对新分析器的更新/修复,该分析器可能没有检查库命名冲突。无论何时使用“导入”,都会导入库。此库应具有声明的库(包含main()函数的文件除外)。有关如何将两个文件合并为导入文件或部分文件的问题,请参见:非常感谢Alexandre。你的回答很有帮助,我很感激。