Logo

Daakia VC Flutter SDK

Integrate Daakia's video conferencing capabilities into your Flutter applications with ease.

This SDK provides a simple and efficient way to add video conferencing features to your Flutter apps, supporting both Android and iOS platforms.

Supported Platforms

βœ… Android | βœ… iOS

How to use

Installation

add daakia_vc_flutter_sdk: to your pubspec.yaml dependencies then run flutter pub get

  dependencies:
    daakia_vc_flutter_sdk: ^4.2.0

Android

We require a set of permissions that need to be declared in your AppManifest.xml. These are required permissions

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.your.package">
  <uses-feature android:name="android.hardware.camera" />
  <uses-feature android:name="android.hardware.camera.autofocus" />
  <uses-permission android:name="android.permission.CAMERA" />
  <uses-permission android:name="android.permission.RECORD_AUDIO" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
  <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
  <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
  <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
  <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
  ...
</manifest>

iOS

Camera and microphone usage need to be declared in your Info.plist file.

<dict>
  ...
  <key>NSCameraUsageDescription</key>
  <string>$(PRODUCT_NAME) uses your camera</string>
  <key>NSMicrophoneUsageDescription</key>
  <string>$(PRODUCT_NAME) uses your microphone</string>

Your application can still run the voice call when it is switched to the background if the background mode is enabled. Select the app target in Xcode, click the Capabilities tab, enable Background Modes, and check Audio, AirPlay, and Picture in Picture.

Your Info.plist should have the following entries.

<dict>
  ...
  <key>UIBackgroundModes</key>
  <array>
    <string>audio</string>
  </array>

For iOS, the minimum supported deployment target is 12.1. You will need to add the following to your Podfile.

platform :ios, '12.1'

You may need to delete Podfile.lock and re-run pod install after updating deployment target.

Usage/Examples

import 'package:daakia_vc_flutter_sdk/daakia_vc_flutter_sdk.dart';

await Navigator.push<void>(
                context,
                MaterialPageRoute(
                  builder: (_) => DaakiaVideoConferenceWidget(
                    meetingId: meetingUID,
                    secretKey: licenseKey,
                    isHost: isHost,
                    configuration: DaakiaMeetingConfiguration (optional),
                  ),
                ),
              );

Use DaakiaVideoConferenceWidget to start the meeting.

Parameters

To run the DaakiaVideoConferenceWidget, you will need to pass the following parameters:

  • meetingId (String):
    This parameter is required to join a specific meeting. It helps identify the unique meeting to which the user will connect.

  • secretKey (String):
    This is a license key that grants access to the meeting service. It is necessary for secure access.

  • isHost (bool, optional):
    This optional parameter defines the user's role. When set to true, the user will join as the host of the meeting; otherwise, they will be a participant.

  • configuration (DaakiaMeetingConfiguration, optional):

Provides advanced customization like metadata and participant name behavior.
For full details, see DaakiaMeetingConfiguration Documentation

Obtaining Meeting ID and License Key

To use the Daakia Video Conference SDK, you will need a meetingId and a secretKey (license key). These are required for accessing and initiating meetings.

How to Obtain:

  • Contact Us: Reach out to us directly at contact@daakia.co.in. Our team will assist you in setting up your account and providing the necessary credentials.
  • Visit Our Website: You can also find more information and request access by visiting our website: https://www.daakia.co.in/.

We will guide you through the process of creating meetings and obtaining your unique license key.

πŸ“Š Optional: Datadog Logging

The SDK supports Datadog integration for advanced logging, monitoring, and crash reporting.
This is optional β€” your app will run normally without it.

If enabled, all SDK-related logs are automatically sent to Datadog.
You don’t need to call any manual log functions β€” everything is handled internally by the SDK.

Initialization

To enable Datadog, initialize the service at app startup (e.g., in main.dart):

import 'package:daakia_vc_flutter_sdk/service/daakia_vc_datadog_service.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await DaakiaVcDatadogService.initialize(
    clientToken: "<YOUR_DATADOG_CLIENT_TOKEN>",
    env: "<YOUR_ENV>",
    serviceName: "<YOUR_SERVICE_NAME>",
    applicationId: "<YOUR_DATADOG_APPLICATION_ID>",
    version: "<YOUR_APP_VERSION>",
  );

  runApp(const MyApp());
}

πŸ‘‰ You can obtain the required Datadog credentials in the same way as the meetingId and secretKey β€” by reaching out to our team.

Screen Share

Android

On Android, you will have to use a media projection foreground service.

In the app's AndroidManifest.xml file, declare the service with the appropriate types and permissions as following:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
  <!-- Required permissions for screen share -->
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" />
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA"/>
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE"/>
  <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
  <application>
    ...
    <service
            android:name="de.julianassmann.flutter_background.IsolateHolderService"
            android:enabled="true"
            android:exported="false"
            android:foregroundServiceType="mediaProjection|microphone|camera" />
  </application>
</manifest>

iOS

On iOS, a broadcast extension is needed in order to capture screen content from other apps. See For iOS-specific setup, refer to the setup guide for instructions.

Support

For support, email contact@daakia.co.in.

Libraries

api/api_client
api/injection
daakia_vc_flutter_sdk
events/meeting_end_events
events/rtc_events
model/action_model
model/base_list_response
model/base_response
model/daakia_meeting_configuration
model/emoji_message
model/event_password_protected_data
model/feature_configuration
model/feature_data
model/features
model/host_token_model
model/language_model
model/licence_verify_model
model/meeting_details
model/meeting_details_model
model/participant_attendance_data
model/participant_config
model/private_chat_model
model/remote_activity_data
model/rtc_data
model/saved_data
model/send_message_model
model/session_details_data
model/subscription_feature
model/transcription_action_model
model/transcription_model
model/translate_base_model
model/translation_data
model/upload_data
model/vc_config
model/white_board_data
presentation/bottom_sheets/end_meeting_bottomsheet
presentation/bottom_sheets/more_option_bottomsheet
presentation/dialog/emoji_dialog
presentation/dialog/language_select_dialog
presentation/dialog/pariticipant_dialog_controls
presentation/dialog/transcript_download_choice_dialog
presentation/pages/all_participant_page
presentation/pages/chat_controller
presentation/pages/chat_page
presentation/pages/private_chat_page
presentation/pages/transcription_screen
presentation/pages/webinar_controls
presentation/screens/license_expired
presentation/screens/loading_screen
presentation/screens/prejoin_screen
presentation/screens/web_preview
presentation/widgets/compact_file_preview
presentation/widgets/compact_participant_tile
presentation/widgets/emoji_reaction_widget
presentation/widgets/file_preview
presentation/widgets/initials_circle
presentation/widgets/joined_participant_widget
presentation/widgets/loader
presentation/widgets/lobby_request_widget
presentation/widgets/message_bubble
presentation/widgets/participant_tile
presentation/widgets/pending_attendance_widget
presentation/widgets/reaction_bubble
presentation/widgets/transcription_bubble
resources/colors/color
resources/json/language_json
rtc/lobby_request_manager
rtc/meeting_manager
rtc/method_channels/reply_kit
rtc/participant_sorter
rtc/room
rtc/widgets/connectivity_banner
rtc/widgets/no_video
rtc/widgets/participant
rtc/widgets/participant_info
rtc/widgets/participant_stats
rtc/widgets/pip_screen
rtc/widgets/rtc_controls
rtc/widgets/text_field
rtc/widgets/white_board_widget
service/daakia_vc_datadog_service
utils/constants
utils/datadog_disconnect_logger
utils/datadog_logger_helper
utils/datadog_reconnect_logger
utils/device_network_info
utils/meeting_actions
utils/name_input_formatter
utils/rtc_ext
utils/storage_helper
utils/utils
viewmodel/rtc_provider
viewmodel/rtc_viewmodel