Как я могу проверить существование функции в Дарт?
есть ли способ проверить существование функции или метода в 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
.