是否有 Dart 函数来检查对象是否具有特定属性或方法?

Rah*_*Zun 9 dart flutter

问题:

i) 检查Dart 中的普通 Class 对象是否具有特定属性时?

ii) 从 api 解码 JSON 响应正文时,如何检查对象在DART 中是否具有特定属性?

例如在 Javascript 中,有“ hasOwnProperty

if (obj.hasOwnProperty('property')) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

Dor*_*taş 10

您可以使用bool containsKey(Object key);. 签出文档以获取更多信息。您也可以在这里找到相关帖子

if (obj.containsKey('property')) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)


jam*_*lin 9

Dart 是强类型的;Object在调用方法之前,您应该检查它是否是您想要的类型:

if (obj is ClassWithProperty) {
  print(obj.property);
}
Run Code Online (Sandbox Code Playgroud)

我不推荐它,但您可以通过使用类型来禁用类型检查dynamic

var hasProperty = false;
try {
  (obj as dynamic).property;
  hasProperty = true;
} on NoSuchMethodError {
}
Run Code Online (Sandbox Code Playgroud)

捕捉Error类型是不受欢迎的