【发布时间】:2020-06-02 18:05:42
【问题描述】:
我有以下类和接口:
class Place extends Entity
with ChangeNotifier, FieldGetters
implements Scannable, Likable {
// ...some stuff
}
abstract class Likable {
// ... some stuff
}
Entity 只是其他类的基类。
所以,问题是我想检查实现Likable 接口的对象是否属于Place 类。为此,我使用以下代码:
logger.i('likable is ${like.likable.runtimeType}');
logger.i('likable is Place: ${like.likable is Place}');
第一行按预期工作并显示以下输出:
I/flutter ( 1635): [38;5;12m┌───────────────────────────────────────────────────────────────────────────────[0m
I/flutter ( 1635): [38;5;12m├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄[0m
I/flutter ( 1635): [38;5;12m│ ???? likable is Place[0m
I/flutter ( 1635): [38;5;12m└───────────────────────────────────────────────────────────────────────────────[0m
但是,第二行代码表现得很奇怪,显示如下:
I/flutter ( 1635): [38;5;12m┌───────────────────────────────────────────────────────────────────────────────[0m
I/flutter ( 1635): [38;5;12m├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄[0m
I/flutter ( 1635): [38;5;12m│ ???? likable is Place: false[0m
I/flutter ( 1635): [38;5;12m└───────────────────────────────────────────────────────────────────────────────[0m
官方文档建议可以通过is关键字检查接口继承。我很困惑。在这种情况下如何检查接口继承?
飞镖:v2.8.1
颤动:v1.17.0
【问题讨论】:
-
is关键字应该可以工作。 I cannot reproduce your problem. 请发布一个最小的、完整的、可验证的示例。
标签: flutter inheritance dart interface