initialize method

Future<void> initialize()

Initializes the BITalinoController. Throws BITalinoErrorType.CONTROLLER_FAILED_INITIALIZE if the controller fails to initialize.

Throws BITalinoException(BITalinoErrorType.CONTROLLER_FAILED_INITIALIZE) if the controller failed to initialize. Throws BITalinoException(BITalinoErrorType.CONTROLLER_ALREADY_INITIALIZED) if the controller was already initialize before. Throws BITalinoException(BITalinoErrorType.CUSTOM) if a native exception was raised.

Implementation

Future<void> initialize() async {
  late bool initialized;
  try {
    if (Platform.isAndroid) {
      initialized = await _channel.invokeMethod(
          "initialize", <String, dynamic>{
        "type": serializeCommunicationType(communicationType)
      }).timeout(timeout);
    } else if (Platform.isIOS) {
      initialized = await _channel.invokeMethod("initialize",
          <String, dynamic>{"address": address}).timeout(timeout);
    }
  } on TimeoutException {
    throw BITalinoException(BITalinoErrorType.TIMEOUT);
  } catch (e) {
    print(e.toString());
    throw BITalinoException(BITalinoErrorType.CONTROLLER_FAILED_INITIALIZE);
  }

  if (!initialized)
    throw BITalinoException(BITalinoErrorType.CONTROLLER_FAILED_INITIALIZE);

  this.initialized = true;
  const EventChannel bitalinoEventChannel =
      EventChannel('com.afonsoraposo.bitalino/dataStream');
  _dataStreamSubscription =
      bitalinoEventChannel.receiveBroadcastStream().listen(
    (dynamic bitalinoData) {
      if (_onBITalinoDataAvailable != null)
        _onBITalinoDataAvailable!(
            BITalinoFrame._fromPlatformData(bitalinoData));
    },
  );
}