是的,我看过dart import and part of directives in same file
我有这个结构:
我正试图实现这种行为:
有一个问题。由于一些奇怪的原因,我不能使用任何指令'part of'。所以我不能在one.dart
:
part of mylib;
import 'SomeClass.dart';
//somecode
所以我要么需要将类定义从SomeClass.dart
移到one.dart
(这会使代码的可读性和混淆性降低),或者我需要在mylib.dart
中移动'import'
library mylib;
import 'SomeClass.dart';
part ..
我不喜欢其中任何一个选项。在第二种情况下,我将需要解析所有模块然后移动导入/导出。这肯定会破坏一些东西。
这可能听起来很奇怪,但该项目将自动从各种模块构建。 one/
就是其中之一。
这个应用程序设计很糟糕,我知道。但要么我需要找到更好的方法,要么只是公开所有变量,不要打扰。
答案 0 :(得分:2)
默认为每个文件定义一种类型,不使用part
,并仅导入所需的文件。这涵盖了大多数用例。
现在,我们假设您有两种常用的类型 - 例如Thing
和ThingException
,当Thing
做坏事时会被抛出。在任何地方导入这两个文件都很繁琐,因此您有三个选项可以自行权衡:
thing.dart
导出thing_exception.dart
。导入thing.dart
使导入文件可以访问两者。 thing_exception.dart
声明它是'的一部分。 thing.dart
。导入thing.dart
使导入文件可以访问这两个文件。 对于这种简单类型及其例外,最好的选择是使用选项1.当代码量增加或两种类型的可见性不同时,此选项变得不那么有吸引力。这将选项2和3放在桌面上。
如果您有单独的文件,选项2通常是比选项3更好的方法,因为您保持一定的灵活性 - 您只能 导入thing_exception.dart
而不是thing.dart
。如果您使用选项3,则无法执行此操作 - 您要么导入所有部件,要么不导入任何部件。这是您在尝试执行零件并在同一文件中导入时看到的错误。
当您在两个文件中的代码高度依赖于彼此并且他们需要能够访问彼此的私有成员时,选项3变得有价值。这种情况不常见。
当你有一堆这样的文件时,它就变成了一个'库'在更传统的意义上。您声明导出文件的主库文件(您的my lib.dart
文件):
export 'public.dart';
export 'other_public.dart';
bin
脚本整体导入了库,但它无法看到任何未从my_lib.dart
显式导出的内容。
import 'package:mylib/mylib.dart';
Here's an example of a smallish package将所有这三个选项结合使用,以便提供良好的参考。
答案 1 :(得分:0)
我认为使用import
和export
show
会更好。 (现在不鼓励使用part of
。)
此问题的答案可能会对您有所帮助:When to use part/part of versus import/export in Dart?
创建库包文档:https://www.dartlang.org/guides/libraries/create-library-packages