TUILiveKit

English | 简体中文

TUILiveKit is a real-time interactive live streaming component that includes features such as host streaming, audience viewing, bullet chat, likes and gifts, audience management, and co-hosting management. It is suitable for live streaming scenarios such as entertainment, e-commerce, and education. By integrating TUILiveKit, you can add all the above live streaming features to your application in just three steps and launch your business quickly within 30 minutes.

Environment Preparation

Flutter

  • Flutter 3.27.4 or higher.
  • Dart 3.6.2 or higher.

Android

  • Android Studio 3.5 or higher.
  • Android devices with Android 5.0 or higher.

iOS

  • Xcode 15.0 or higher.
  • Ensure your project has a valid developer signature.

Getting Started

Add Dependencies

Follow the documentation to add the tencent_live_uikit package as a dependency in your pubspec.yaml file (Installation Guide).

Activate Services

To use the interactive live streaming features, ensure that you have activated the service.

  1. Activate the Service
    You can activate the service and obtain your SDKAppID and SDKSecretKey in the Console.

  2. Configure SDKAppID and SDKSecretKey
    Open the example/lib/debug/generate_test_user_sig.dart file and fill in the obtained SDKAppID and SDKSecretKey:

    static int sdkAppId = 0; // Replace with your SDKAppID
    static String secretKey = ''; // Replace with your SDKSecretKey
    

Example Experience

After configuring the SDKAppID and SDKSecretKey, you can directly run the example project to experience the features.

For a better experience, it is recommended to prepare two mobile devices: one for the host to start the live stream and the other for the audience to watch or listen.

Quick Integration

Configure Routing and Internationalization

return MaterialApp(
   navigatorObservers: TUILiveKitNavigatorObserver.instance,
   localizationsDelegates: [
      ...LiveKitLocalizations.localizationsDelegates,
      ...BarrageLocalizations.localizationsDelegates,
      ...GiftLocalizations.localizationsDelegates,
   ],
   supportedLocales: [
      ...LiveKitLocalizations.supportedLocales,
      ...BarrageLocalizations.supportedLocales,
      ...GiftLocalizations.supportedLocales
   ],
   //...
);

Login

Before using the interactive live streaming features, ensure that you have completed the initialization by executing the following login code.

import 'package:tencent_live_uikit/tencent_live_uikit.dart';

final int sdkAppId = 'replace with your sdkAppId';
final String userId = 'replace with your userId';
final String userSig = 'replace with your userSig';

await TUILogin.instance.login(
   sdkAppId,
   userId,
   userSig,
   TUICallback(onSuccess: () async {
      debugPrint("TUILogin login success");
   }, onError: (code, message) {
      debugPrint("TUILogin login fail, {code:$code, message:$message}");
   }));
  • sdkAppId: You can obtain it from the Console after activating the service.
  • userSig: Generate it using the UserSig Guide.

Host Streaming Page Integration

You can use the Navigator.push method to navigate to the host streaming page.

For video streaming, refer to the following code:

import 'package:tencent_live_uikit/tencent_live_uikit.dart';

Navigator.push(context, MaterialPageRoute(
   builder: (context) {
      final String userId = 'replace with your userId';
      final String roomId = LiveIdentityGenerator.instance.generateId(userId, RoomType.live);
      return TUILiveRoomAnchorWidget(roomId: roomId);
   }));

For audio chat room streaming, refer to the following code:

import 'package:tencent_live_uikit/tencent_live_uikit.dart';

Navigator.push(context, MaterialPageRoute(
   builder: (context) {
      final String userId = 'replace with your userId';
      final String roomId = LiveIdentityGenerator.instance.generateId(userId, RoomType.live);
      final params = RoomParams();
      params.maxSeatCount = 10; // Set the number of seats (maximum value depends on your subscription plan).
      return TUIVoiceRoomWidget(
                              roomId: roomId,
                              behavior: RoomBehavior.prepareCreate,
                              params: params);
   }));

The maximum value of maxSeatCount can be found in the Multi-guests in Package Details.

Live Room List Page Integration

The live room list page displays ongoing video live streams and audio chat rooms. You can click on any room to join as an audience member and watch or listen.
You can use the Navigator.push method to navigate to the live room list page.
Reference code:

Navigator.push(context, MaterialPageRoute(
   builder: (context) {
      return Scaffold(
         body: SafeArea(child: LiveListWidget()));
   }));

You can also directly add the live room list page as a child widget in your existing page.
Reference code:

// Single child widget, using Container as an example
Container(
   child: LiveListWidget()
)

// Multiple child widget, using Column as an example
Column(
   children: [LiveListWidget()]
)

Feedback and Support

If you have any questions or feedback, please contact us at: info_rtc@tencent.com.

Libraries

common/boot/boot
common/boot/index
common/constants/constants
common/constants/index
common/error/error_handler
common/error/index
common/index
common/language/gen/livekit_localizations
common/language/gen/livekit_localizations_en
common/language/gen/livekit_localizations_zh
common/language/index
common/logger/index
common/logger/logger
common/platform/index
common/platform/rtc_live_tuikit_method_channel
common/platform/rtc_live_tuikit_platform_interface
common/resources/colors
common/resources/images
common/resources/index
common/screen/index
common/screen/screen_adapter
common/widget/action_sheet
common/widget/alert
common/widget/basic_widget
common/widget/debounce_gesture_recognizer
common/widget/global
common/widget/index
common/widget/toast
component/audience_list/audience_list_panel_widget
component/audience_list/audience_list_widget
component/audio_effect/index
component/audio_effect/service/audio_effect_service
component/audio_effect/store/audio_effect_state
component/audio_effect/store/audio_effect_state_factory
component/audio_effect/widget/audio_effect_panel_widget
component/audio_effect/widget/change_voice_widget
component/audio_effect/widget/reverb_widget
component/beauty/beauty_panel_widget
component/dashboard/anchor_dashboard_widget
component/dashboard/audience_dashboard_widget
component/index
component/live_info/live_info_detail_widget
component/live_info/live_info_widget
component/music/index
component/music/service/music_service
component/music/store/music_state
component/music/store/music_state_factory
component/music/widget/music_panel_widget
component/preview/live_cover_select_widget
component/preview/live_info_edit_widget
component/room_list/service/room_list_service
component/room_list/store/room_list_state
component/room_list/widget/room_list_widget
live_identity_generator
live_list_widget
live_navigator_observer
live_stream/manager/controller/controller
live_stream/manager/controller/index
live_stream/manager/controller/media_controller
live_stream/manager/controller/room_controller
live_stream/manager/controller/seat_controller
live_stream/manager/controller/user_controller
live_stream/manager/controller/view_controller
live_stream/manager/index
live_stream/manager/live_controller
live_stream/manager/observer/index
live_stream/manager/observer/live_observer
live_stream/service/impl/live_service_impl
live_stream/service/index
live_stream/service/live_service
live_stream/service/service_provider
live_stream/state/index
live_stream/state/live_define
live_stream/state/live_state
live_stream/state/operation/beauty_state
live_stream/state/operation/index
live_stream/state/operation/media_state
live_stream/state/operation/operation_state
live_stream/state/operation/room_state
live_stream/state/operation/seat_state
live_stream/state/operation/user_state
live_stream/state/view/view_state
live_stream/widget/index
live_stream/widget/live_room/anchor/anchor_widget
live_stream/widget/live_room/anchor/common/settings_panel_widget
live_stream/widget/live_room/anchor/common/video_params_panel_widget
live_stream/widget/live_room/anchor/index
live_stream/widget/live_room/anchor/live_streaming/anchor_living_function_widget
live_stream/widget/live_room/anchor/live_streaming/anchor_living_widget
live_stream/widget/live_room/anchor/preview/anchor_preview_function_widget
live_stream/widget/live_room/anchor/preview/anchor_preview_widget
live_stream/widget/live_room/anchor/video/anchor_video_widget
live_stream/widget/live_room/audience/audience_widget
live_stream/widget/live_room/audience/component/live_streaming/audience_function_widget
live_stream/widget/live_room/audience/component/live_streaming/audience_living_widget
live_stream/widget/live_room/audience/component/live_streaming/audience_waiting_pass_widget
live_stream/widget/live_room/audience/component/video/audience_video_widget
live_stream/widget/live_room/audience/index
live_stream/widget/live_room/index
live_stream/widget/live_room/live_room_anchor_widget
live_stream/widget/live_room/live_room_audience_widget
live_stream/widget/live_room/video/index
live_stream/widget/live_room/video/nine_grid_layout
live_stream/widget/live_room/video/video_item_widget
live_stream/widget/live_room/video/video_widget_factory
tencent_live_uikit
voice_room/api/index
voice_room/api/voice_room_service
voice_room/index
voice_room/manager/index
voice_room/manager/module/index
voice_room/manager/module/media_manager
voice_room/manager/module/room_manager
voice_room/manager/module/seat_manager
voice_room/manager/module/user_manager
voice_room/manager/observer/im_observer
voice_room/manager/observer/index
voice_room/manager/observer/live_list_observer
voice_room/manager/observer/room_engine_observer
voice_room/manager/voice_room_manager
voice_room/state/index
voice_room/state/media_state
voice_room/state/room_state
voice_room/state/seat_state
voice_room/state/user_state
voice_room/state/voice_define
voice_room/voice_room_widget
voice_room/widget/component/audience_list/audience_list_widget
voice_room/widget/component/audience_list/index
voice_room/widget/component/audience_list/manager/audience_list_manager
voice_room/widget/component/audience_list/manager/audience_list_observer
voice_room/widget/component/audience_list/panel/audience_list_panel_widget
voice_room/widget/component/audience_list/state/audience_list_state
voice_room/widget/component/audio_effect/audio_effect_panel_widget
voice_room/widget/component/audio_effect/index
voice_room/widget/component/audio_effect/manager/audio_effect_manager
voice_room/widget/component/audio_effect/state/audio_effect_state
voice_room/widget/component/audio_effect/state/audio_effect_state_factory
voice_room/widget/component/audio_effect/widget/change_voice_widget
voice_room/widget/component/audio_effect/widget/reverb_widget
voice_room/widget/component/dashboard/anchor_dashboard_widget
voice_room/widget/component/dashboard/audience_dashboard_widget
voice_room/widget/component/dashboard/index
voice_room/widget/component/index
voice_room/widget/component/live_info/index
voice_room/widget/component/live_info/live_info_widget
voice_room/widget/component/live_info/manager/live_info_engine_observer
voice_room/widget/component/live_info/manager/live_info_im_observer
voice_room/widget/component/live_info/manager/live_info_manager
voice_room/widget/component/live_info/panel/live_info_detail_widget
voice_room/widget/component/live_info/state/live_info_state
voice_room/widget/index
voice_room/widget/panel/common
voice_room/widget/panel/index
voice_room/widget/panel/live_background_select_widget
voice_room/widget/panel/live_cover_select_panel_widget
voice_room/widget/panel/seat_invitation_panel_widget
voice_room/widget/panel/seat_management_panel_widget
voice_room/widget/panel/seat_mode_setting_widget
voice_room/widget/panel/settings_panel_widget
voice_room/widget/panel/user_management_panel_widget
voice_room/widget/prepare/index
voice_room/widget/prepare/live_prepare_function_widget
voice_room/widget/prepare/live_prepare_info_edit_widget
voice_room/widget/prepare/seat_preview_widget
voice_room/widget/root/bottom_menu_widget
voice_room/widget/root/index
voice_room/widget/root/top_widget
voice_room/widget/voice_room_prepare_widget
voice_room/widget/voice_room_root_widget