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 child = namedArguments[const Symbol('child')];
  if (child == null) {
    throw "child required in SelectionArea";
  }
  void Function(SelectedContent?)? onSelectionChanged;
  var onSelectionChangedParse =
      namedArguments[const Symbol('onSelectionChanged')];
  if (onSelectionChangedParse != null) {
    onSelectionChanged = (SelectedContent? s) {
      (onSelectionChangedParse as LoxFunction)
          .call(interpreter, [SelectedContentIns(s?.plainText ?? '')], {});
    };
  }
  Widget Function(BuildContext, SelectableRegionState)? contextMenuBuilder = (
    BuildContext context,
    SelectableRegionState selectableRegionState,
  ) {
    return AdaptiveTextSelectionToolbar.selectableRegion(
      selectableRegionState: selectableRegionState,
    );
  };
  var contextMenuBuilderParse =
      namedArguments[const Symbol('contextMenuBuilder')];
  if (contextMenuBuilderParse != null) {
    contextMenuBuilder = (BuildContext b, SelectableRegionState s) {
      return (contextMenuBuilderParse as LoxFunction)
          .call(interpreter, [b, SelectableRegionStateIns(s)], {}) as Widget;
    };
  }
  return SelectionArea(
    onSelectionChanged: onSelectionChanged,
    contextMenuBuilder: contextMenuBuilder,
    child: child as Widget,
  );
}