writeHypenRouter function

dynamic writeHypenRouter(
  1. String path,
  2. ResolvedLibraryResult libResolved
)

Implementation

writeHypenRouter(String path, final ResolvedLibraryResult libResolved) async {
  try {
    final libElement = libResolved.element;
    final targets = libElement.topLevelElements
        .whereType<FunctionElement>()
        .where(
          (f) => previewAnnotation.hasAnnotationOf(f),
        )
        .toList();

    var preview = previews.where(
      (element) {
        return element.path == path;
      },
    ).firstOrNull;

    preview?.builders.clear();

    if (targets.isEmpty) {
      previews.remove(preview);
      await writeToFile();
      reloader = Timer(
        Duration(milliseconds: 300),
        () {
          server?.stdin.add('R'.codeUnits);
          reloader = null;
        },
      );
      return;
    }

    if (preview == null) {
      preview = Preview(path);
      previews.add(preview);
    }

    for (final widget in targets) {
      preview.builders.add(widget);
    }

    await writeToFile();
    reloader?.cancel();
    reloader = Timer(
      Duration(milliseconds: 300),
      () {
        server?.stdin.add('R'.codeUnits);
        reloader = null;
      },
    );
  } catch (e) {
    alert(e.toString());
  }
}