invoke method Null safety

Object? invoke(
  1. String memberName,
  2. List positionalArguments,
  3. [Map<Symbol, dynamic>? namedArguments]
)

Invokes the function or method memberName, and returns the result.

Let o be the object reflected by this mirror, let f be the simple name of the member denoted by memberName, let a1, ..., an be the elements of positionalArguments let k1, ..., km be the identifiers denoted by the elements of namedArguments.keys and let v1, ..., vm be the elements of namedArguments.values. Then this method will perform the method invocation o.f(a1, ..., an, k1: v1, ..., km: vm) in a scope that has access to the private members of o (if o is a class or library) or the private members of the class of o (otherwise). If the invocation returns a result r, this method returns the result r. If the invocation causes a compilation error the effect is the same as if a non-reflective compilation error had been encountered. If the invocation throws an exception e (that it does not catch) this method throws e.

Note that the return type of the corresponding method in dart:mirrors is InstanceMirror.

Required capabilities: invoke on an instance mirror requires a matching InstanceInvokeCapability or InstanceInvokeMetaCapability; invoke on a class mirror requires a matching StaticInvokeCapability or StaticInvokeMetaCapability; and invoke on a top-level function requires a matching TopLevelInvokeCapability or TopLevelInvokeMetaCapability.

Implementation

//
// TODO(eernst) doc: make this comment more user friendly.
// TODO(eernst) doc: revise language on private members when semantics known.
///
/// Required capabilities: [invoke] on an instance mirror requires a matching
/// [InstanceInvokeCapability] or [InstanceInvokeMetaCapability]; [invoke] on
/// a class mirror requires a matching [StaticInvokeCapability] or
/// [StaticInvokeMetaCapability]; and [invoke] on a top-level function
/// requires a matching [TopLevelInvokeCapability] or
/// [TopLevelInvokeMetaCapability].
Object? invoke(String memberName, List positionalArguments,
    [Map<Symbol, dynamic>? namedArguments]);