call method

  1. @override
Object call(
  1. Interpreter interpreter,
  2. List<Object?> arguments,
  3. Map<Symbol, Object?> namedArguments
)
override

Implementation

@override
Object call(Interpreter interpreter, List<Object?> arguments,
    Map<Symbol, Object?> namedArguments) {
  Widget? child;
  var childParsed = namedArguments[const Symbol('child')];
  if (childParsed != null) {
    child = childParsed as Widget;
  }
  var valueListenable = namedArguments[const Symbol('valueListenable')];
  if (valueListenable == null) {
    throw "valueListenable required in ValueListenableBuilder";
  }
  var builder = namedArguments[const Symbol('builder')];
  if (builder == null) {
    throw "builder required in ListView.builder";
  }
  return ValueListenableBuilder(
      builder: (context, value, child) {
        return (builder as LoxFunction)
            .call(interpreter, [context, value, child], {}) as Widget;
      },
      valueListenable: valueListenable as ValueListenable,
      child: child);
}