enterLiveRoomPage method
Implementation
Future<bool> enterLiveRoomPage(BuildContext context, LiveInfo liveInfo) async {
LiveKitLogger.info('enterLiveRoomPage called, roomId: ${liveInfo.liveID}, isRepeatClick: $isRepeatClick');
if (isRepeatClick) {
LiveKitLogger.info('enterLiveRoomPage blocked by isRepeatClick');
return false;
}
isRepeatClick = true;
try {
GlobalFloatWindowManager floatWindowManager = GlobalFloatWindowManager.instance;
GlobalFloatWindowState state = floatWindowManager.state;
if (floatWindowManager.isFloating()) {
if (state.ownerId.value == TUIRoomEngine.getSelfInfo().userId) {
makeToast(context, LiveKitLocalizations.of(Global.appContext())!.livelist_exit_float_window_tip,
type: ToastType.warning);
return false;
}
if (state.roomId.value == liveInfo.liveID) {
floatWindowManager.switchToFullScreenMode();
return false;
} else {
floatWindowManager.overlayManager.closeOverlay();
}
}
bool isOwner = liveInfo.liveOwner.userID == TUIRoomEngine.getSelfInfo().userId;
if (isOwner) {
try {
final result = await LiveListStore.shared.fetchLiveInfo(liveInfo.liveID);
if (result.errorCode == TUIError.success.value()) {
liveInfo.keepOwnerOnSeat = result.liveInfo.keepOwnerOnSeat;
}
} on Exception catch (e) {
LiveKitLogger.error(e.toString());
}
Navigator.push(
getContext(),
MaterialPageRoute(
settings: const RouteSettings(name: routeLiveRoomAudience),
builder: (context) {
if (floatWindowManager.isEnableFloatWindowFeature()) {
return TUILiveRoomAnchorOverlay(roomId: liveInfo.liveID, liveInfo: liveInfo, needPrepare: false);
} else {
return TUILiveRoomAnchorWidget(roomId: liveInfo.liveID, liveInfo: liveInfo, needPrepare: false);
}
},
));
return true;
} else {
Navigator.push(
getContext(),
MaterialPageRoute(
settings: const RouteSettings(name: routeLiveRoomAudience),
builder: (context) {
if (floatWindowManager.isEnableFloatWindowFeature()) {
return TUILiveRoomAudienceOverlay(roomId: liveInfo.liveID, liveInfo: liveInfo);
} else {
return TUILiveRoomAudienceWidget(roomId: liveInfo.liveID, liveInfo: liveInfo);
}
},
));
}
return true;
} finally {
isRepeatClick = false;
}
}