Как я могу проверить существование функции в Дарт?

есть ли способ проверить существование функции или метода в Dart, не пытаясь вызвать его и поймать ошибку NoSuchMethodError? Я ищу что-то вроде

if (exists("func_name")){...}

чтобы проверить, является ли функция с именем. Заранее спасибо!

1 ответов


С зеркала API :

import 'dart:mirrors';

class Test {
  method1() => "hello";
}

main() {
  print(existsFunction("main")); // true
  print(existsFunction("main1")); // false
  print(existsMethodOnObject(new Test(), "method1")); // true
  print(existsMethodOnObject(new Test(), "method2")); // false
}

bool existsFunction(String functionName) => currentMirrorSystem().isolate
    .rootLibrary.functions.containsKey(functionName);

bool existsMethodOnObject(Object o, String method) => reflect(o).type.methods
    .containsKey(method);

existsFunction проверяет только если функция с functionName существует в текущей библиотеке. Таким образом, с функциями, доступными import сообщении existsFunction вернутся false.