SeatGridWidget

API 简介

SeatGridWidget 是我们开发语音聊天室 UIKit 的一个基础控件,该核心控件提供了开启语音聊天室、关闭语音聊天室,直播间内麦位管理,如申请上麦,邀请上麦,移动麦位,踢人下麦等丰富的 API。

API 概览

API
描述
创建 SeatGridController 对象
创建 SeatGridWidget 对象
打开本地麦克风
关闭本地麦克风
暂停发布本地的音频流
恢复发布本地的音频流
主播创建直播间并开始推流
主播停止推流并销毁直播间
观众加入某个主播的直播间
观众离开某个主播的直播间
更新房间麦位模式
主播响应上麦申请/观众响应上麦邀请
主播取消上麦邀请/观众取消上麦申请
takeSeat
上麦
移麦
leaveSeat
下麦
主播邀请用户上麦
主播踢用户下麦
lockSeat
主播锁定麦位(包括位置锁定、音频状态锁定和视频状态锁定)
主播设置麦位列表的布局模式
设置事件回调
移除事件回调

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()
返回值:Future<TUIActionCallback>

stopMicrophone

关闭本地麦克风。
void stopMicrophone()
返回值:void

muteMicrophone

暂停发布本地的音频流。
Future<TUIActionCallback> muteMicrophone()
返回值:Future<TUIActionCallback>

unmuteMicrophone

恢复发布本地的音频流。
Future<TUIActionCallback> unmuteMicrophone()
返回值:Future<TUIActionCallback>

startVoiceRoom

主播创建直播间并开始推流。
Future<TUIValueCallBack<TUIRoomInfo>> startVoiceRoom(TUIRoomInfo roomInfo)
参数:
参数
类型
含义
roomInfo
创建直播间的信息
返回值:Future<TUIValueCallBack<TUIRoomInfo>>

stopVoiceRoom

主播停止推流并销毁直播间。
Future<TUIActionCallback> stopVoiceRoom()
返回值:Future<TUIActionCallback>

joinVoiceRoom

观众加入某个主播的直播间。
Future<TUIValueCallBack<TUIRoomInfo>> joinVoiceRoom(String roomId)
参数:
参数
类型
含义
roomId
String
直播间 ID
返回值:Future<TUIValueCallBack<TUIRoomInfo>>

leaveVoiceRoom

观众离开某个主播的直播间。
Future<TUIActionCallback> leaveVoiceRoom()
返回值:Future<TUIActionCallback>

updateRoomSeatMode

更新房间麦位模式。
Future<TUIActionCallback> updateRoomSeatMode(TUISeatMode seatMode)
参数:
参数
类型
含义
seatMode
freeToTake:自由上麦模式,观众可以自由上麦,无需申请。
applyToTake:申请上麦模式,观众上麦需要主播同意后才能上麦。
返回值:Future<TUIActionCallback>

responseRemoteRequest

主播响应上麦申请/观众响应上麦邀请。
Future<TUIActionCallback> responseRemoteRequest(String userId, bool agree)
参数:
参数
类型
含义
userId
String
响应用户的用户 ID,如果当前身份是观众,ID 可填空
agree
bool
是否接受请求,true:同意请求,false:拒绝请求
返回值:Future<TUIActionCallback>

cancelRequest

主播取消上麦邀请/观众取消上麦申请
Future<TUIActionCallback> cancelRequest(String userId)
参数:
参数
类型
含义
userId
String
取消的用户 ID,如果当前身份是观众,ID 可填空
返回值:Future<TUIActionCallback>

takeSeat

上麦(上麦发言模式下,需要申请)
Future<RequestCallback> takeSeat(int seatIndex, int timeout)
参数:
参数
类型
含义
index
int
上麦的麦位编号
timeout
int
超时时间,单位秒,如果设置为 0,SDK 不会做超时检测,也不会触发超时回调
返回值:Future<RequestCallback>

moveToSeat

移麦(已经在麦位上的用户才可以调用此函数)
Future<TUIActionCallback> moveToSeat(int index)
参数:
参数
类型
含义
index
int
需要移动过去的麦位编号
返回值:Future<TUIActionCallback>

leaveSeat

主动下麦
Future<TUIActionCallback> leaveSeat()
返回值:Future<TUIActionCallback>

takeUserOnSeatByAdmin

主播邀请用户上麦
Future<RequestCallback> takeUserOnSeatByAdmin(int seatIndex, String userId, int timeout)
参数:
参数
类型
含义
index
int
被邀请的麦位编号
userId
String
被邀请的用户 ID
timeout
int
超时时间,单位秒,如果设置为 0,SDK 不会做超时检测,也不会触发超时回调
返回值:Future<RequestCallback>

kickUserOffSeatByAdmin

主播踢用户下麦
Future<TUIActionCallback> kickUserOffSeatByAdmin(String userId)
参数:
参数
类型
含义
userId
String
被踢下麦的用户 ID
返回值:Future<TUIActionCallback>

lockSeat

锁麦,主播锁定麦位(包括位置锁定、音频状态锁定和视频状态锁定)
Future<TUIActionCallback> lockSeat(int index, TUISeatLockParams lockMode)
参数:
参数
类型
含义
seatIndex
int
需要锁定麦位的麦位编号
lockMode
锁麦参数
返回值:Future<TUIActionCallback>

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
ValueNotifier<TUISeatInfo>
麦位信息通知者
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
TUIError
错误码枚举
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
用户音频状态发生变化事件