FlutterAndroidAuto constructor

FlutterAndroidAuto()

Implementation

FlutterAndroidAuto() {
  if (defaultTargetPlatform != TargetPlatform.android) return;

  _eventBroadcast = _androidAutoController.eventChannel
      .receiveBroadcastStream()
      .listen((event) async {
        final FAAChannelTypes receivedChannelType = EnumUtils.enumFromString(
          FAAChannelTypes.values,
          event['type'],
        );

        switch (receivedChannelType) {
          case FAAChannelTypes.onAndroidAutoConnectionChange:
            final ConnectionStatusTypes connectionStatus =
                EnumUtils.enumFromString(
                  ConnectionStatusTypes.values,
                  event['data']['status'],
                );
            _connectionStatus = connectionStatus.name;
            _onAndroidAutoConnectionChange?.call(connectionStatus);
            break;

          case FAAChannelTypes.onListItemSelected:
            await _androidAutoController.processFAAListItemSelectedChannel(
              event['data']['elementId'],
            );
            break;

          case FAAChannelTypes.onListSectionSelected:
            _androidAutoController.processFAAListSectionSelectedChannel(
              event['data']['elementId'],
              event['data']['selectedIndex'],
            );
            break;

          case FAAChannelTypes.onToggleCheckedChange:
            _androidAutoController.processFAAToggleCheckedChangeChannel(
              event['data']['elementId'],
              event['data']['checked'],
            );
            break;

          case FAAChannelTypes.onPaneActionPressed:
            _androidAutoController.processFAAPaneActionPressedChannel(
              event['data']['elementId'],
            );
            break;

          case FAAChannelTypes.onScreenBackButtonPressed:
            FlutterAndroidAutoController.templateHistory.removeWhere(
              (AATemplate item) =>
                  item.uniqueId == event['data']['elementId'],
            );
            break;

          case FAAChannelTypes.onAlertActionPressed:
            _androidAutoController.processFAAAlertActionPressed(
              event['data']['elementId'],
            );
            break;

          case FAAChannelTypes.onPresentStateChanged:
            final bool completed =
                event['data']['completed'] as bool? ?? false;
            _androidAutoController.processFAAPresentStateChanged(
              event['data']['elementId'],
              completed,
            );
            break;

          case FAAChannelTypes.onTabBarItemSelected:
            break;

          case FAAChannelTypes.onGridButtonPressed:
            await _androidAutoController.processFAAGridButtonPressed(
              event['data']['elementId'],
            );
            break;

          default:
            break;
        }
      });
}