Fix hot restart when application is being debugged (#9450)

- [x] Resume the isolate before performing a hot restart.

Fixes #8923
diff --git a/packages/flutter_tools/lib/src/run_hot.dart b/packages/flutter_tools/lib/src/run_hot.dart
index fd353d2..fc79f4f 100644
--- a/packages/flutter_tools/lib/src/run_hot.dart
+++ b/packages/flutter_tools/lib/src/run_hot.dart
@@ -329,6 +329,18 @@
     final bool updatedDevFS = await _updateDevFS();
     if (!updatedDevFS)
       return new OperationResult(1, 'DevFS Synchronization Failed');
+    // Check if the isolate is paused and resume it.
+    if (currentView?.uiIsolate != null) {
+      // Reload the isolate.
+      await currentView.uiIsolate.reload();
+      final ServiceEvent pauseEvent = currentView.uiIsolate.pauseEvent;
+      if ((pauseEvent != null) && pauseEvent.isPauseEvent) {
+        // Resume the isolate so that it can be killed by the embedder.
+        await currentView.uiIsolate.resume();
+      }
+    }
+    // We are now running from source.
+    _runningFromSnapshot = false;
     await _launchFromDevFS(package, mainPath);
     restartTimer.stop();
     printTrace('Restart performed in '
diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart
index 9bf6c05..58d3aa7 100644
--- a/packages/flutter_tools/lib/src/vmservice.dart
+++ b/packages/flutter_tools/lib/src/vmservice.dart
@@ -941,6 +941,12 @@
     }
   }
 
+  /// Resumes the isolate.
+  Future<Map<String, dynamic>> resume() {
+    return invokeRpcRaw('resume');
+  }
+
+
   // Flutter extension methods.
 
   // Invoke a flutter extension method, if the flutter extension is not