reloadApp function
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();
}
}