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。你的回答很有帮助,我很感激。