reloadApp function

Future<ReloadResult> reloadApp(
  1. ReloadInput _
)

Triggers a hot reload of the running Flutter app via the fdb controller.

Returns ReloadSuccess on success, ReloadNoSession if no PID file is present, ReloadProcessDead if the process is not alive, or ReloadFailed if the reload timed out.

Implementation

Future<ReloadResult> reloadApp(ReloadInput _) async {
  final stopwatch = Stopwatch()..start();
  try {
    await sendControllerCommand(
      ControllerCommand.reload,
      timeout: const Duration(seconds: reloadTimeoutSeconds),
    );
    return ReloadSuccess(stopwatch.elapsedMilliseconds);
  } on AppDiedException {
    final pid = readAppPid() ?? readControllerPid() ?? readPid();
    if (pid == null) return const ReloadNoSession();
    return ReloadProcessDead(pid);
  } on ControllerCommandFailed {
    return const ReloadFailed();
  } on ControllerUnavailable {
    final pid = readControllerPid() ?? readPid();
    if (pid == null) return const ReloadNoSession();
    if (!isProcessAlive(pid)) return ReloadProcessDead(pid);
    return const ReloadFailed();
  }
}