import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:yumi/app_localizations.dart'; import 'package:yumi/ui_kit/components/sc_debounce_widget.dart'; import 'package:yumi/ui_kit/components/text/sc_text.dart'; import 'package:provider/provider.dart'; import 'package:yumi/app/routes/sc_fluro_navigator.dart'; import 'package:yumi/modules/room/voice_room_route.dart'; import 'package:yumi/services/audio/rtm_manager.dart'; import 'package:yumi/services/gift/gift_animation_manager.dart'; import 'package:yumi/services/audio/rtc_manager.dart'; import 'package:yumi/shared/data_sources/sources/local/floating_screen_manager.dart'; import 'package:yumi/shared/tools/sc_gift_vap_svga_manager.dart'; import 'package:yumi/shared/tools/sc_room_effect_scheduler.dart'; import 'package:yumi/ui_kit/widgets/room/anim/room_entrance_widget.dart'; import '../../components/sc_float_ichart.dart'; class ExitMinRoomPage extends StatefulWidget { final bool isFz; final String roomId; const ExitMinRoomPage(this.isFz, this.roomId, {super.key}); @override State createState() => _ExitMinRoomPageState(); } class _ExitMinRoomPageState extends State { @override Widget build(BuildContext context) { return Stack( alignment: Alignment.center, children: [ SCDebounceWidget( child: Container(color: Colors.transparent), onTap: () { Navigator.of(context).pop(); }, ), Column( spacing: 55.w, mainAxisAlignment: MainAxisAlignment.center, children: [ SCDebounceWidget( child: Column( children: [ Image.asset( "sc_images/room/sc_icon_min_room.png", width: 48.w, height: 48.w, ), SizedBox(height: 8.w), text( SCAppLocalizations.of(context)!.mInimize, fontSize: 15.sp, textColor: Colors.white, fontWeight: FontWeight.w500, ), ], ), onTap: () async { final rtcProvider = context.read(); if (rtcProvider.roomStartupStatus == RoomStartupStatus.loading || rtcProvider.roomStartupStatus == RoomStartupStatus.failed) { SCNavigatorUtils.goBack(context); await rtcProvider.exitCurrentVoiceRoomSession(false); return; } final giftAnimationManager = context.read(); final rtmProvider = context.read(); final currentRoomId = rtcProvider.currenRoom?.roomProfile?.roomProfile?.id ?.trim() ?? ''; rtcProvider.setVoiceRoomRouteVisible(false); rtcProvider.setRoomVisualEffectsEnabled(false); rtmProvider.msgFloatingGiftListener = null; rtmProvider.msgLuckyGiftRewardTickerListener = null; RoomEntranceHelper.clearQueue(); OverlayManager().removeRoom(roomId: currentRoomId); SCRoomEffectScheduler().clearDeferredTasks( reason: 'room_minimize', ); SCGiftVapSvgaManager().stopPlayback(); giftAnimationManager.cleanupAnimationResources(); SCFloatIchart().show(); VoiceRoomRoute.popVoiceRoomToPrevious(context); }, ), SCDebounceWidget( child: Column( children: [ Image.asset( "sc_images/room/sc_icon_exit_room.png", width: 48.w, height: 48.w, ), SizedBox(height: 8.w), text( SCAppLocalizations.of(context)!.exit, fontSize: 15.sp, textColor: Colors.white, fontWeight: FontWeight.w500, ), ], ), onTap: () { final rtcProvider = context.read(); SCNavigatorUtils.goBack(context); rtcProvider.exitCurrentVoiceRoomSession(false); }, ), ], ), ], ); } }