Skip to content

Commit c663cd5

Browse files
[flutter_tools] Refresh VM state before executing hot reload (#53960)
1 parent cccfe96 commit c663cd5

File tree

3 files changed

+9
-0
lines changed

3 files changed

+9
-0
lines changed

packages/flutter_tools/lib/src/resident_runner.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -825,6 +825,13 @@ abstract class ResidentRunner {
825825
await Future.wait(futures);
826826
}
827827

828+
Future<void> refreshVM() async {
829+
final List<Future<void>> futures = <Future<void>>[
830+
for (final FlutterDevice device in flutterDevices) device.getVMs(),
831+
];
832+
await Future.wait(futures);
833+
}
834+
828835
Future<void> debugDumpApp() async {
829836
await refreshViews();
830837
for (final FlutterDevice device in flutterDevices) {

packages/flutter_tools/lib/src/run_hot.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -798,6 +798,7 @@ class HotRunner extends ResidentRunner {
798798

799799
if (!_isPaused()) {
800800
globals.printTrace('Refreshing active FlutterViews before reloading.');
801+
await refreshVM();
801802
await refreshViews();
802803
}
803804

packages/flutter_tools/test/general.shard/resident_runner_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ void main() {
111111
});
112112
when(mockFlutterDevice.vmService).thenReturn(mockVMService);
113113
when(mockFlutterDevice.refreshViews()).thenAnswer((Invocation invocation) async { });
114+
when(mockFlutterDevice.getVMs()).thenAnswer((Invocation invocation) async { });
114115
when(mockFlutterDevice.reloadSources(any, pause: anyNamed('pause'))).thenReturn(<Future<Map<String, dynamic>>>[
115116
Future<Map<String, dynamic>>.value(<String, dynamic>{
116117
'type': 'ReloadReport',

0 commit comments

Comments
 (0)