urRunBridge<T extends DartBaseClass> function
dynamic
urRunBridge<T extends DartBaseClass>(})
Implementation
dynamic urRunBridge<T extends DartBaseClass>(Object? object,
String context,
dynamic Function(T) func, {
dynamic defValue = null,
bool nonnullable = false,
bool multiApplicationCheck = false,
bool reportError = true,
}) {
var object_T = object as T?;
if (object_T == null) {
try {
throw Exception("object_T is null, ${object}, ${context}");
} catch (e, stack) {
UnitRCError.report(
e: e, stack: stack, context: context, reportError: reportError);
if (nonnullable) {
rethrow;
}
}
return defValue;
}
final block = () {
if (multiApplicationCheck) {
if (!UnitRCApplication.isApplicationValid()) {
try {
throw Exception(
"invalid application: ${UnitRCApplication
.getCurrApplication()}, ${object}: ${context}");
} catch (e, stack) {
UnitRCError.report(
e: e, stack: stack, context: context, reportError: reportError);
if (nonnullable) {
rethrow;
}
}
return defValue;
}
}
try {
return func(object_T);
} catch (e, stack) {
UnitRCError.report(
e: e, stack: stack, context: context, reportError: reportError);
return defValue;
}
};
if (identical(Zone.current, object_T.zone)) {
return block();
} else {
return object_T.zone.run(() {
return block();
});
}
}