如何在Dart中检查对象类类型

时间:2018-03-16 06:45:30

标签: dart flutter

在我的代码中,我需要根据输入类类型采取不同的操作。 所以我写了两行来检查输入对象的类类型。

debugPrint("Let me know the next action: $action");
debugPrint((action is LoadPomodorosAction).toString());

输出

I/flutter (24128): Let me know the next action: Instance of 'LoadPomodorosAction'
I/flutter (24128): false

这是什么意思? 对象'action'是“LoadPomodorosAction'的实例”,同时它的类类型不是LoadPomodorosAction。

如何调整代码以便我可以知道类的操作类型? 我怀疑运行类型可能有问题。但是我如何才能了解运行时类型?

1 个答案:

答案 0 :(得分:0)

我已尝试复制您的问题,但无法重现。但是,为解释您的询问,下面是有关this SO post中讨论的在导入中使用时相对路径和绝对路径之间差异的完整详细信息:

包导入

'package:...导入可从任何地方进行,以导入文件 lib/*

相对进口

相对导入始终相对于导入文件。如果 lib/model/test.dart导入'example.dart',它导入 lib/model/example.dart

如果要从任何文件导入test/model_tests/fixture.darttest/*中,您只能使用相对导入,因为 导入始终假定为lib/

这也适用于所有其他non-lib/顶级目录,例如 drive_test/example/tool/,...

lib / main.dart

lib/*中的入口点文件当前存在一个已知问题 就像Flutter中的lib/main.darthttps://github.com/dart-lang/sdk/issues/33076

Dart始终假定入口点文件位于其他顶级文件中 目录然后是lib/(例如bin/web/tool/example/, ...)。 Flutter打破了这个假设。因此,您目前不能 在lib/

内的入口点文件中使用相对导入

另请参见

以前,this bug是作为相对路径和绝对路径之间的问题发布在GitHub上的。看来这是根据this GitHub post解决的。