FlutterCarplay constructor

FlutterCarplay()

Creates an FlutterCarplay and starts the connection.

Implementation

FlutterCarplay() {
  if (defaultTargetPlatform != TargetPlatform.iOS) return;

  _eventBroadcast = _carPlayController.eventChannel
      .receiveBroadcastStream()
      .listen((event) {
    final FCPChannelTypes receivedChannelType =
        EnumUtils.enumFromString(FCPChannelTypes.values, event['type']);
    switch (receivedChannelType) {
      case FCPChannelTypes.onCarplayConnectionChange:
        final ConnectionStatusTypes connectionStatus =
            EnumUtils.enumFromString(
          ConnectionStatusTypes.values,
          event['data']['status'],
        );
        _connectionStatus = connectionStatus.name;
        if (_onCarplayConnectionChange != null) {
          _onCarplayConnectionChange!(connectionStatus);
        }
        break;
      case FCPChannelTypes.onFCPListItemSelected:
        _carPlayController.processFCPListItemSelectedChannel(
          event['data']['elementId'],
        );
        break;
      case FCPChannelTypes.onFCPListImageRowItemSelected:
        _carPlayController.processFCPListImageRowItemSelectedChannel(
          event['data']['elementId'],
        );
        break;
      case FCPChannelTypes.onFCPListImageRowItemElementSelected:
        _carPlayController.processFCPListImageRowItemElementSelectedChannel(
          event['data']['elementId'],
          event['data']['index'],
        );
        break;
      case FCPChannelTypes.onFCPAlertActionPressed:
        _carPlayController.processFCPAlertActionPressed(
          event['data']['elementId'],
        );
        break;
      case FCPChannelTypes.onPresentStateChanged:
        _carPlayController.processFCPAlertTemplateCompleted(
          event['data']['completed'],
        );
        break;
      case FCPChannelTypes.onGridButtonPressed:
        _carPlayController.processFCPGridButtonPressed(
          event['data']['elementId'],
        );
        break;
      case FCPChannelTypes.onBarButtonPressed:
        _carPlayController.processFCPBarButtonPressed(
          event['data']['elementId'],
        );
        break;
      case FCPChannelTypes.onTextButtonPressed:
        _carPlayController.processFCPTextButtonPressed(
          event['data']['elementId'],
        );
        break;
      case FCPChannelTypes.onScreenBackButtonPressed:
        FlutterCarPlayController.templateHistory.removeWhere(
          (CPTemplate item) => item.uniqueId == event['data']['elementId'],
        );
        break;
      default:
        break;
    }
  });
}