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.
-
Activate the Service
You can activate the service and obtain yourSDKAppID
andSDKSecretKey
in the Console. -
Configure SDKAppID and SDKSecretKey
Open theexample/lib/debug/generate_test_user_sig.dart
file and fill in the obtainedSDKAppID
andSDKSecretKey
: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_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/live_streaming/link/anchor_link_mic_manage_panel_widget
- live_stream/widget/live_room/anchor/live_streaming/link/apply_link_mic_float_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/live_streaming/link/select_link_mic_type_panel_widget
- live_stream/widget/live_room/audience/component/live_streaming/link/video_link_settings_panel_widget
- live_stream/widget/live_room/audience/component/video/audience_video_widget
- live_stream/widget/live_room/audience/component/video/link_request_place_holder_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/index
- voice_room/widget/root/top_widget
- voice_room/widget/voice_room_prepare_widget
- voice_room/widget/voice_room_root_widget