block method

dynamic block(
  1. Map map,
  2. Map? methodMap,
  3. BuildContext ctx,
  4. Domain? domain,
  5. dynamic fun,
  6. String name,
  7. bool widget, {
  8. bool forceApply = false,
})

Implementation

dynamic block(
  Map map,
  Map? methodMap,
  BuildContext ctx,
  Domain? domain,
  dynamic fun,
  String name,
  bool widget, {
  bool forceApply = false,
}) {
  var na = named(name, map['na'], methodMap, ctx, domain);
  var pa = positioned(map['pa'], methodMap, ctx, domain);
  var ta = map['typeArgumentList'];
  // var arguments = map['arguments'];
  final bind = widget && (na.binding == true || pa.binding == true);
  try {
    fun = FairModule.cast(ctx, fun);
    if (forceApply || !bind) {
      if (ta != null) {
        var properties = <String, dynamic>{};
        properties['pa'] = pa.data;
        properties.addAll(na.data);
        properties['ta'] = ta;
        return Function.apply(
            fun, [Property.extract(data: properties)], null);
      } else {
        return Function.apply(
            fun, [Property.extract(list: pa.data, map: na.data)], null);
      }
    }
    return FairComponent(name, func: fun, na: na.data, pa: pa.data);
  } catch (e, stack) {
    FlutterError.reportError(FlutterErrorDetails(
      exception: e,
      library: 'Fair Runtime',
      stack: stack,
      context: ErrorSummary('while parsing widget of $name, $fun'),
    ));

    //print StackTrack in console
    _dumpErrorToConsole(name, map, e, stack);

    rethrow;
  }
}