Live Streaming | Interactive co-guest | Live Information | Live Interactive |
![]() |
![]() | ![]() | ![]() |
TUILiveRoomAudienceWidget provides a complete audience-side UI and business logic for live streaming scenarios. This widget does not support floating window mode. If you require floating window, see Add Floating Window (Audience Page).TUILiveRoomAudienceWidget according to your business logic and use one of the following approaches:import 'package:tencent_live_uikit/tencent_live_uikit.dart';// Navigate to the audience viewing pageNavigator.push(context, MaterialPageRoute(builder: (BuildContext context) {final roomId = "test_live_room_id";return TUILiveRoomAudienceWidget(roomId: roomId);}));
// --- Select one integration method based on your Widget tree structure ---// [Option one] As the only child Widget (single subtree)// Suitable for containers like Container, Padding that usually only contain one child WidgetContainer(child: TUILiveRoomAudienceWidget(roomId: roomId) // Integrate audience viewing here)// [Option two] As one of multiple child Widgets (multiple subtrees)// Suitable for layouts like Column, Row, Stack that can contain multiple child WidgetsStack(children: [YourOtherWidget(), // Your other child WidgetTUILiveRoomAudienceWidget(roomId: roomId), // Integrate audience viewing hereYourOtherWidget(), // Your other child Widget])
TUILiveRoomAudienceOverlay enables floating window mode for the audience viewing page. During a live stream, you can switch between in-app and out-of-app (Picture-in-Picture) floating window modes. TUILiveRoomAudienceOverlay is built using Flutter’s official Overlay API and native Picture-in-Picture. To integrate:import 'package:tencent_live_uikit/tencent_live_uikit.dart';// Navigate to the viewing pageNavigator.push(context, MaterialPageRoute(builder: (BuildContext context) {final roomId = "test_live_room_id";return TUILiveRoomAudienceOverlay(roomId: roomId);}));
TUILiveRoomAudienceOverlay cannot be embedded as a child widget in container widgets (such as Container, Stack, etc.); it must be navigated to as a standalone page. This is because Overlay is used internally, and LiveKit needs to control the entire Overlay page to switch floating window modes.

livekit/lib/common/language/i10n/ directory to modify the text:
livekit_en.arb: English Text.livekit_zh.arb: Simplified Chinese Text.livekit_zh_Hant.arb: Traditional Chinese Text.flutter gen-l10n in your terminal to regenerate localization code. livekit/assets/images/ directory. To update icons, simply replace the PNG files in this folder.
Feature | Description | Integration Guide |
Host Streaming | The complete workflow for a host to start a stream, including pre-stream setup and various in-stream interactions. | |
Live Stream List | Display the live stream list interface and features, including the live stream list and room information display. |
iOS | Android |
![]() | ![]() |

TUILiveRoomAudienceOverlay, ensure that pop-up components (such as BottomSheet, Dialog, etc.) use the rootNavigator context (recommended: Global.appContext()). secondaryNavigator. Pop-ups using the secondaryNavigator context will be obstructed by the Overlay because, on the same Navigator, the Overlay layer is above regular pages, allowing it to float above them. Using the rootNavigator ensures pop-ups display correctly above the Overlay.文档反馈