run<T> static method Null safety

Future<T> run<T>(
  1. Executable<T> executable,
  2. {List<String> imports = const [],
  3. Uri? packageConfigURI,
  4. String? additionalContents,
  5. List<Type> additionalTypes = const [],
  6. void eventHandler(
    1. dynamic event
    )?,
  7. void logHandler(
    1. String line
    )?}
)

Implementation

static Future<T> run<T>(
  Executable<T> executable, {
  List<String> imports = const [],
  Uri? packageConfigURI,
  String? additionalContents,
  List<Type> additionalTypes = const [],
  void Function(dynamic event)? eventHandler,
  void Function(String line)? logHandler,
}) async {
  final source = SourceGenerator(
    executable.runtimeType,
    imports: imports,
    additionalContents: additionalContents,
    additionalTypes: additionalTypes,
  );

  final executor = IsolateExecutor<T>(
    source,
    packageConfigURI: packageConfigURI,
    message: executable.message,
  );

  if (eventHandler != null) {
    executor.events.listen(eventHandler);
  }

  if (logHandler != null) {
    executor.console.listen(logHandler);
  }

  return executor.execute();
}