initialize method

Future<void> initialize()

Initializes this FlutterReactiveBle instance and its platform-specific counterparts.

The initialization is performed automatically the first time any BLE operation is triggered.

Implementation

Future<void> initialize() async {
  if (_initialization == null) {
    _debugLogger = DebugLogger(
      'REACTIVE_BLE',
      print,
    );

    if (Platform.isAndroid || Platform.isIOS) {
      ReactiveBlePlatform.instance =
          const ReactiveBleMobilePlatformFactory().create(
        logger: _debugLogger,
      );
    }

    _blePlatform = ReactiveBlePlatform.instance;

    _initialization ??= _blePlatform.initialize();

    _connectedDeviceOperator = ConnectedDeviceOperationImpl(
      blePlatform: _blePlatform,
    );
    _deviceScanner = DeviceScannerImpl(
      blePlatform: _blePlatform,
      platformIsAndroid: () => Platform.isAndroid,
      delayAfterScanCompletion: Future<void>.delayed(
        const Duration(milliseconds: 300),
      ),
      addToScanRegistry: scanRegistry.add,
    );

    _deviceConnector = DeviceConnectorImpl(
      blePlatform: _blePlatform,
      deviceIsDiscoveredRecently: scanRegistry.deviceIsDiscoveredRecently,
      deviceScanner: _deviceScanner,
      delayAfterScanFailure: const Duration(seconds: 10),
    );

    await _initialization;
  }
}