
import 'package:flutter/material.dart';import 'package:tencent_live_uikit/common/index.dart';import 'package:tencent_live_uikit/component/index.dart';class YourAnchorPage extends StatefulWidget {final String liveId;const YourAnchorPage({super.key, required this.liveId});@overrideState<YourAnchorPage> createState() => _YourAnchorPageState();}class _YourAnchorPageState extends State<YourAnchorPage> {@overrideWidget build(BuildContext context) {return Scaffold(body: SafeArea(child: Stack(children: [// ... 其他直播间元素 ...// 观众列表组件Positioned(top: 12.height,right: 50.width,child: AudienceListWidget(roomId: widget.liveId,),),],),),);}}
接口 | 参数 | 说明 |
onClickUserItem | LiveUserInfo | 观众列表点击回调。 |
class LiveUserInfo {/// User unique identifier ID.String userID;/// User name.String userName;/// User avatar URL.String avatarURL;LiveUserInfo({this.userID = '', this.userName = '', this.avatarURL = ''});}
onClickUserItem 回调,并通过 LiveAudienceStore 来执行具体操作,例如实现将用户踢出直播间的功能:import 'package:atomic_x_core/atomicxcore.dart';import 'package:flutter/cupertino.dart';import 'package:flutter/material.dart';import 'package:tencent_live_uikit/component/index.dart';import 'package:rtc_room_engine/rtc_room_engine.dart';class YourAnchorPage extends StatefulWidget {final String liveId;const YourAnchorPage({super.key, required this.liveId});@overrideState<YourAnchorPage> createState() => _YourAnchorPageState();}class _YourAnchorPageState extends State<YourAnchorPage> {// 1. 定义观众列表组件用的 Storelate final LiveAudienceStore _liveAudienceStore;@overridevoid initState() {super.initState();_liveAudienceStore = LiveAudienceStore.create(widget.liveId);}@overrideWidget build(BuildContext context) {return Scaffold(body: SafeArea(child: Stack(children: [// ... 其他直播间元素 ...// 2. 接入观众列表组件,并绑定"点击单个观众"事件Positioned(top: 12.height,right: 50.width,child: AudienceListWidget(roomId: widget.liveId,onClickUserItem: (LiveUserInfo userInfo) {_showUserManagementSheet(userInfo);},),),],),),);}// 3. 自定义用户管理弹窗void _showUserManagementSheet(LiveUserInfo user) {showCupertinoModalPopup<void>(context: context,builder: (ctx) => CupertinoActionSheet(title: const Text('观众管理'),message: Text('请选择对 ${user.userName} 的操作'),actions: [CupertinoActionSheetAction(isDestructiveAction: true,onPressed: () {Navigator.of(ctx).pop();_kickOutUser(user);},child: const Text('踢出直播间'),),],cancelButton: CupertinoActionSheetAction(isDefaultAction: true,onPressed: () => Navigator.of(ctx).pop(),child: const Text('取消'),),),);}// 4. 调用 Store 方法将用户踢出void _kickOutUser(LiveUserInfo user) {_liveAudienceStore.kickUserOutOfRoom(user.userID).then((result) {if (result.errorCode == TUIError.success.rawValue) {debugPrint('Successfully kicked out ${user.userName}.');} else {debugPrint('Failed to kick out user, code: ${result.errorCode}, message: ${result.errorMessage}');}});}}
文档反馈