SeatGridWidget
API 简介
SeatGridWidget 是我们开发语音聊天室 UIKit 的一个基础控件,该核心控件提供了开启语音聊天室、关闭语音聊天室,直播间内麦位管理,如申请上麦,邀请上麦,移动麦位,踢人下麦等丰富的 API。
API 概览
API | 描述 |
创建 SeatGridController 对象 | |
创建 SeatGridWidget 对象 | |
打开本地麦克风 | |
关闭本地麦克风 | |
暂停发布本地的音频流 | |
恢复发布本地的音频流 | |
主播创建直播间并开始推流 | |
主播停止推流并销毁直播间 | |
观众加入某个主播的直播间 | |
观众离开某个主播的直播间 | |
更新房间麦位模式 | |
主播响应上麦申请/观众响应上麦邀请 | |
主播取消上麦邀请/观众取消上麦申请 | |
上麦 | |
移麦 | |
下麦 | |
主播邀请用户上麦 | |
主播踢用户下麦 | |
主播锁定麦位(包括位置锁定、音频状态锁定和视频状态锁定) | |
主播设置麦位列表的布局模式 | |
设置事件回调 | |
移除事件回调 |
API 详情
SeatGridController
创建一个
SeatGridController
对象实例。SeatGridController
负责提供语音聊天室场景 API。SeatGridController()
返回值:SeatGridController
SeatGridWidget
创建一个
SeatGridWidget
对象实例。 SeatGridWidget
负责渲染绘制麦位 UI。SeatGridWidget({super.key,required this.controller,this.seatWidgetBuilder,this.onSeatWidgetTap});
参数:
参数 | 类型 | 含义 |
key | Key? | Flutter 控制如何用一个新 widget 替换 旧 widget 的参数 |
controller | SeatGridWidget 的控制器,负责提供语音聊天室场景 API | |
seatWidgetBuilder | 自定义麦位 widget 的构造器 | |
onSeatWidgetTap | 麦位点击事件回调 |
返回值:SeatGridWidget
startMicrophone
打开本地麦克风。
Future<TUIActionCallback> startMicrophone()
stopMicrophone
关闭本地麦克风。
void stopMicrophone()
返回值:void
muteMicrophone
暂停发布本地的音频流。
Future<TUIActionCallback> muteMicrophone()
unmuteMicrophone
恢复发布本地的音频流。
Future<TUIActionCallback> unmuteMicrophone()
startVoiceRoom
主播创建直播间并开始推流。
Future<TUIValueCallBack<TUIRoomInfo>> startVoiceRoom(TUIRoomInfo roomInfo)
参数:
参数 | 类型 | 含义 |
roomInfo | 创建直播间的信息 |
stopVoiceRoom
主播停止推流并销毁直播间。
Future<TUIActionCallback> stopVoiceRoom()
joinVoiceRoom
观众加入某个主播的直播间。
Future<TUIValueCallBack<TUIRoomInfo>> joinVoiceRoom(String roomId)
参数:
参数 | 类型 | 含义 |
roomId | String | 直播间 ID |
leaveVoiceRoom
观众离开某个主播的直播间。
Future<TUIActionCallback> leaveVoiceRoom()
updateRoomSeatMode
更新房间麦位模式。
Future<TUIActionCallback> updateRoomSeatMode(TUISeatMode seatMode)
参数:
参数 | 类型 | 含义 |
seatMode | freeToTake:自由上麦模式,观众可以自由上麦,无需申请。 applyToTake:申请上麦模式,观众上麦需要主播同意后才能上麦。 |
responseRemoteRequest
主播响应上麦申请/观众响应上麦邀请。
Future<TUIActionCallback> responseRemoteRequest(String userId, bool agree)
参数:
参数 | 类型 | 含义 |
userId | String | 响应用户的用户 ID,如果当前身份是观众,ID 可填空 |
agree | bool | 是否接受请求,true:同意请求,false:拒绝请求 |
cancelRequest
主播取消上麦邀请/观众取消上麦申请
Future<TUIActionCallback> cancelRequest(String userId)
参数:
参数 | 类型 | 含义 |
userId | String | 取消的用户 ID,如果当前身份是观众,ID 可填空 |
takeSeat
上麦(上麦发言模式下,需要申请)
Future<RequestCallback> takeSeat(int seatIndex, int timeout)
参数:
参数 | 类型 | 含义 |
index | int | 上麦的麦位编号 |
timeout | int | 超时时间,单位秒,如果设置为 0,SDK 不会做超时检测,也不会触发超时回调 |
moveToSeat
移麦(已经在麦位上的用户才可以调用此函数)
Future<TUIActionCallback> moveToSeat(int index)
参数:
参数 | 类型 | 含义 |
index | int | 需要移动过去的麦位编号 |
leaveSeat
主动下麦
Future<TUIActionCallback> leaveSeat()
takeUserOnSeatByAdmin
主播邀请用户上麦
Future<RequestCallback> takeUserOnSeatByAdmin(int seatIndex, String userId, int timeout)
参数:
参数 | 类型 | 含义 |
index | int | 被邀请的麦位编号 |
userId | String | 被邀请的用户 ID |
timeout | int | 超时时间,单位秒,如果设置为 0,SDK 不会做超时检测,也不会触发超时回调 |
kickUserOffSeatByAdmin
主播踢用户下麦
Future<TUIActionCallback> kickUserOffSeatByAdmin(String userId)
参数:
参数 | 类型 | 含义 |
userId | String | 被踢下麦的用户 ID |
lockSeat
锁麦,主播锁定麦位(包括位置锁定、音频状态锁定和视频状态锁定)
Future<TUIActionCallback> lockSeat(int index, TUISeatLockParams lockMode)
参数:
参数 | 类型 | 含义 |
seatIndex | int | 需要锁定麦位的麦位编号 |
lockMode | 锁麦参数 |
setLayoutMode
设置麦位列表的布局模式。
void setLayoutMode(LayoutMode layoutMode, SeatWidgetLayoutConfig? layoutConfig)
参数:
参数 | 类型 | 含义 |
layoutMode | 麦位列表的布局模式,支持聚焦布局、宫格布局、纵向布局、自由布局。 | |
layoutConfig | 布局配置信息,只有自由布局模式下才生效 |
返回值:void
addObserver
设置事件回调。
void addObserver(SeatGridWidgetObserver observer)
参数:
参数 | 类型 | 含义 |
observer | 核心组件的回调对象 |
返回值:void
removeObserver
移除事件回调。
void removeObserver(SeatGridWidgetObserver observer)
参数:
参数 | 类型 | 含义 |
observer | 核心组件的回调对象 |
返回值:void
类型定义
类型 | 含义 |
自定义麦位 widget 构造器 | |
麦位点击事件 | |
收到房间销毁的事件 | |
收到被移出房间的事件 | |
收到申请上麦/邀请上麦的请求事件 | |
申请麦位/邀请上麦 请求被取消的事件 | |
收到用户被移下麦事件 | |
用户音频状态发生变化事件。 | |
麦位列表的布局模式,支持聚焦布局、宫格布局、纵向布局、自定义布局 | |
麦位布局的对齐方式 | |
请求类型(申请上麦和邀请上麦) | |
请求结果类型 | |
请求结果回调 | |
麦位布局配置信息 | |
麦位布局中每一行的布局配置信息 |
SeatWidgetBuilder
自定义麦位
widget
构造器typedef SeatWidgetBuilder = Widget Function(BuildContext context,ValueNotifier<TUISeatInfo> seatInfoNotifier,ValueNotifier<int> volumeNotifier);
参数:
参数 | 类型 | 含义 |
context | BuildContext | 上下文 |
seatInfoNotifier | 麦位信息通知者 | |
volumeNotifier | ValueNotifier<int> | 音量信息通知者 |
OnSeatWidgetTap
麦位点击事件
typedef OnSeatWidgetTap = void Function(TUISeatInfo seatInfo);
参数:
参数 | 类型 | 含义 |
seatInfo | 麦位信息 |
OnRoomDismissed
收到房间销毁的事件
typedef OnRoomDismissed = void Function(String roomId);
参数:
参数 | 类型 | 含义 |
roomId | String | 房间 ID |
OnKickedOutOfRoom
收到被移出房间的事件
typedef OnKickedOutOfRoom = void Function(String roomId, TUIKickedOutOfRoomReason reason, String message);
参数:
参数 | 类型 | 含义 |
roomId | String | 房间 ID |
reason | TUIKickedOutOfRoomReason | 被踢原因 |
message | String | 被踢信息 |
OnSeatRequestReceived
收到申请上麦/邀请上麦的请求事件
typedef OnSeatRequestReceived = void Function(RequestType type, TUIUserInfo userInfo);
参数:
参数 | 类型 | 含义 |
type | 请求类型 | |
userInfo | 请求者信息 |
OnSeatRequestCancelled
申请麦位/邀请上麦 请求被取消的事件
typedef OnSeatRequestCancelled = void Function(RequestType type, TUIUserInfo userInfo);
参数:
参数 | 类型 | 含义 |
type | 请求类型 | |
userInfo | 操作者信息 |
OnKickedOffSeat
收到用户被移下麦事件
typedef OnKickedOffSeat = void Function(TUIUserInfo userInfo);
参数:
参数 | 类型 | 含义 |
userInfo | 操作者信息 |
OnUserAudioStateChanged
用户音频状态发生变化事件
typedef OnUserAudioStateChanged = void Function(TUIUserInfo userInfo, bool hasAudio, TUIChangeReason reason);
参数:
参数 | 类型 | 含义 |
userInfo | 操作者信息 | |
hasAudio | bool | 是否有音频流 |
reason | 音频流更改原因 |
LayoutMode
麦位列表的布局模式
枚举值 | 含义 |
focus | 聚焦布局 |
grid | 宫格布局 |
vertical | 纵向布局 |
free | 自定义布局 |
SeatWidgetLayoutRowAlignment
麦位布局的对齐方式
枚举值 | 含义 |
start | 麦位靠近起始位置 |
end | 麦位靠近结束位置 |
center | 麦位靠近中间位置 |
spaceBetween | 第一个麦位之前和最后一个麦位之后不留空间,其它麦位之间均匀分布剩余空间 |
spaceAround | 第一个麦位之前和最后一个麦位之后分布一半空间,其它麦位之间均匀分布剩余空间 |
spaceEvenly | 在所有麦位之间均匀分布剩余空间 |
RequestType
请求类型
枚举值 | 含义 |
applyToTakeSeat | 申请上麦 |
inviteToTakeSeat | 邀请上麦 |
RequestResultType
申请上麦/邀请上麦回调
枚举值 | 含义 |
onAccepted | 请求被接受S |
onRejected | 请求被拒绝 |
onCancelled | 请求被取消 |
onTimeout | 请求超时 |
onError | 请求异常 |
RequestCallback
请求结果回调
属性 | 类型 | 含义 |
code | 错误码枚举 | |
message | String | 错误码信息 |
type | 请求结果类型 | |
userInfo | 请求处理者 |
SeatWidgetLayoutRowConfig
麦位布局中每一行的布局配置信息
属性 | 类型 | 含义 |
count | int | 此行显示的麦位数量 |
seatSpacing | double | 此行中每个麦位水平间距(仅当对齐方式为 START、END 和 CENTER 时生效) |
seatSize | Size | 此行中麦位布局大小 |
alignment | 此行中布局的对齐方式 |
SeatWidgetLayoutConfig
麦位布局配置信息
属性 | 类型 | 描述 |
rowConfigs | 麦位布局中所有行配置信息列表 | |
rowSpacing | double | 麦位布局行间距 |
事件定义
SeatGridWidgetObserver
事件列表 | 类型 | 含义 |
onRoomDismissed | 收到房间销毁的事件 | |
onKickedOutOfRoom | 收到被移出房间的事件 | |
onSeatRequestReceived | 收到申请上麦/邀请上麦的请求事件 | |
onSeatRequestCancelled | 申请麦位/邀请上麦 请求被取消的事件 | |
onKickedOffSeat | 收到用户被移下麦事件 | |
onUserAudioStateChanged | 用户音频状态发生变化事件 |