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) {
  var icon = namedArguments[const Symbol('icon')];
  if (icon == null) {
    throw "icon required in TextButton.icon";
  }
  var label = namedArguments[const Symbol('label')];
  if (label == null) {
    throw "label required in TextButton.icon";
  }
  ButtonStyle? style;
  var styleParsed = namedArguments[const Symbol('style')];
  if (styleParsed != null) {
    style = styleParsed as ButtonStyle;
  }
  var onPressed = namedArguments[const Symbol('onPressed')];
  if (onPressed == null) {
    throw "onPressed required in TextButton";
  }
  bool? autofocus;
  var autofocusParsed = namedArguments[const Symbol('autofocus')];
  if (autofocusParsed != null) {
    autofocus = autofocusParsed as bool;
  }
  return TextButton.icon(
      icon: icon as Widget,
      label: label as Widget,
      autofocus: autofocus,
      style: style,
      onPressed: () {
        (onPressed as LoxFunction).call(interpreter, [], {});
      });
}