connectToVmService method

Future<bool> connectToVmService([
  1. Uri? uri
])

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;
  }
}