import 'dart:ui' as ui; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:yumi/app_localizations.dart'; import 'package:yumi/ui_kit/widgets/room/set_room_role_page.dart'; import 'package:provider/provider.dart'; import 'package:yumi/ui_kit/components/dialog/dialog_base.dart'; import 'package:yumi/app/constants/sc_screen.dart'; import 'package:yumi/shared/tools/sc_lk_dialog_util.dart'; import 'package:yumi/shared/business_logic/models/res/room_user_card_res.dart'; import 'package:yumi/services/audio/rtc_manager.dart'; import '../../../shared/data_sources/models/enum/sc_room_roles_type.dart'; class RoomUserCardSetting extends StatefulWidget { final String? roomId; final RoomUserCardRes? userCardInfo; const RoomUserCardSetting({super.key, this.roomId, this.userCardInfo}); @override State createState() => _RoomUserCardSettingState(); } class _RoomUserCardSettingState extends State { @override Widget build(BuildContext context) { final rtcProvider = Provider.of(context, listen: false); final targetUserId = widget.userCardInfo?.userProfile?.id ?? ""; final isTargetRoomManager = widget.userCardInfo?.roomRole == SCRoomRolesType.ADMIN.name || widget.userCardInfo?.roomRole == SCRoomRolesType.HOMEOWNER.name; final isOnMai = rtcProvider.userOnMaiInIndex(targetUserId) != -1; List list = []; list.add(SizedBox(height: 10.w)); if (isOnMai) { if (rtcProvider.isFz()) { ///操作的人是房主 list.add( _item(SCAppLocalizations.of(context)!.removeTheMic, null, () { Navigator.of(context).pop(); rtcProvider.killXiaMai(targetUserId); }), ); } else { if (rtcProvider.isGL() && !isTargetRoomManager) { list.add( _item(SCAppLocalizations.of(context)!.removeTheMic, null, () { Navigator.of(context).pop(); rtcProvider.killXiaMai(targetUserId); }), ); } } } if (rtcProvider.isFz()) { list.add( _item(SCAppLocalizations.of(context)!.setUpAnIdentity, null, () { Navigator.of(context).pop(); showCenterDialog(context, SetRoomRolePage(widget.userCardInfo)); }), ); } if (!isTargetRoomManager) { list.add( _item(SCAppLocalizations.of(context)!.kickedOutOfRoom, null, () { Navigator.of(context).pop(); SmartDialog.show( tag: "showKickedOutOfRoomDialog", maskColor: Colors.black26, alignment: Alignment.center, animationType: SmartAnimationType.fade, clickMaskDismiss: true, builder: (_) { return KickedOutOfRoomDialog( roomId: widget.roomId ?? "", userId: widget.userCardInfo?.userProfile?.id ?? "", ); }, ); }), ); } list.add( _item(SCAppLocalizations.of(context)!.cancel, null, () { Navigator.of(context).pop(); }), ); list.add(SizedBox(height: 10.w)); return SafeArea( child: ClipRRect( borderRadius: BorderRadius.only( topLeft: Radius.circular(12.0), topRight: Radius.circular(12.0), ), child: BackdropFilter( filter: ui.ImageFilter.blur(sigmaX: 15, sigmaY: 15), child: Container( width: ScreenUtil().screenWidth, color: Color(0xff09372E).withValues(alpha: 0.5), child: Column(children: list), ), ), ), ); } Widget _item(String msg, String? icon, Function onClick) { return GestureDetector( behavior: HitTestBehavior.opaque, onTap: () { onClick(); }, child: Column( children: [ Container( decoration: msg == SCAppLocalizations.of(context)!.cancel ? BoxDecoration( color: Color(0xff18F2B1).withValues(alpha: 0.1), borderRadius: BorderRadius.all(Radius.circular(32.w)), ) : null, width: ScreenUtil().screenWidth * 0.7, padding: EdgeInsets.symmetric(vertical: 10.w), child: Row( mainAxisAlignment: MainAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ icon != null ? Image.asset(icon, height: 18.w, width: 18.w) : Container(), SizedBox(width: 5.w), Container( alignment: Alignment.center, child: Text( msg, style: TextStyle( fontSize: sp(16), color: Colors.white, fontWeight: FontWeight.w400, decoration: TextDecoration.none, ), ), ), ], ), ), ], ), ); } }