我在类
中有以下import语句import 'package:dart_web_toolkit/ui.dart';
import '../../util/flex_table_builder.dart' as ftBldr;
import '../factors_list_view.dart';
class MediatingFactorsView extends Composite
{
//...
}
但是,最后一个导入语句会标记一个警告:
The different imported libraries 'flex_table_builder.dart' and 'factors_list_view.dart' should not have the same name
名称完全不同,我在更新到最新的Dart编辑器后,在整个代码中都看到了这一点。这是一个错误吗?
答案 0 :(得分:12)
确保为每个文件分配库名称。该文件的第一行应为:
library foo;
您应该为您使用的每个库使用不同的名称。库名由library
指令指定,但匿名库被视为具有相同的名称,这是警告的来源。
Dart specification中的警告是导入两个具有相同名称的库。
您可以在language tour.
中详细了解如何使用库答案 1 :(得分:3)
您可以关注Package layout conventions。
对于错误:
不同的导入库beginning_view.dart和duration_view.dart不应具有相同的名称
您应该在每个导入的dart文件中定义不同的库名称。
另外一点,您应该使用import 'package:epimss/shared.dart';
代替import 'packages/epimss/shared.dart';
和import 'site_view.dart';
代替import './site_view.dart';
答案 2 :(得分:2)
警告正确表明存在问题。
正确的解决方案取决于Dart文件在概念上是彼此分离还是相关。
不同的图书馆
如果它们在概念上是分开的,那么它们应该被定义为属于具有不同库名的不同库。
import
命令用于引用不同库中的编译单元,而不是属于相同库的编译单元。它希望每个库都有一个唯一的库名。
如果将Dart文件视为库(即,是import
语句的主题)并且未明确命名,则其隐式名称为空字符串。在这种情况下,两个文件都被视为库,并且抱怨有两个具有相同名称的库(空字符串)。
为了使它成为单独的库,给它们不同的名称:
热门档案:
import 'foo.dart';
import 'bar.dart';
foo.dart:
library foo;
bar.dart:
library bar;
同一个库的一部分
但如果它们相关,则不应将它们引用为库。也就是说,不要使用import命令。使用part
命令,该命令将Dart文件视为属于相同库的编译单元。
热门档案:
library baz;
part 'foo.dart';
part 'bar.dart';
foo.dart:
part of baz;
bar.dart:
part of baz;
只有顶级库文件才能包含part
语句。您不需要(也不能拥有)其他文件中的part
语句,即使它们引用了彼此的定义。如果有多个文件,只需将它们全部列在顶层库文件中(按任意顺序)。
虽然库的隐式名称是空字符串,但是当涉及多个部分时无法使用它:所以即使这些文件永远不会作为库导入,您仍然需要明确地为它指定一个库名。
永远记住:import
和part
语句与C预处理器中的#include
宏非常不同。