connectToVmService method
Connect to a VM service
Implementation
Future<bool> connectToVmService([final Uri? uri]) async {
print('Connect to VM service');
// Store the URI for later use
_vmServiceUri =
uri ??
Uri(
host: Envs.flutterRpc.host,
port: Envs.flutterRpc.port,
path: Envs.flutterRpc.path,
);
// Use the [connectedState] notifier to listen for connection updates.
serviceManager.connectedState.addListener(() {
if (serviceManager.connectedState.value.connected) {
print('Manager connected to VM service');
} else {
print('Manager not connected to VM service');
}
});
try {
final finishedCompleter = Completer<void>();
// Use package:devtools_shared to connect to the VM
final vmService = await devtools_shared.connect<VmService>(
uri: _vmServiceUri!,
finishedCompleter: finishedCompleter,
serviceFactory: VmService.defaultFactory,
);
setGlobal(ServiceManager, _serviceManager);
// Open the VM service connection in the service manager
await _serviceManager.vmServiceOpened(
vmService,
onClosed: finishedCompleter.future,
);
// Initialize the ObjectGroupManager
_treeGroupManager = ObjectGroupManager(
debugName: 'treeGroupManager',
vmService: vmService,
isolate: _serviceManager.isolateManager.mainIsolate,
);
notifyListeners();
return true;
} catch (e, stackTrace) {
// Clear the URI if connection fails
_vmServiceUri = null;
print('Error connecting to VM service: $e');
print('Stack trace: $stackTrace');
await _disposeManagers();
return false;
}
}