import 'dart:ui' as ui; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:aslan/app_localizations.dart'; import 'package:aslan/chatvibe_ui/widgets/room/set_room_role_page.dart'; import 'package:provider/provider.dart'; import 'package:aslan/chatvibe_ui/components/dialog/dialog_base.dart'; import 'package:aslan/chatvibe_core/constants/at_screen.dart'; import 'package:aslan/chatvibe_core/utilities/at_lk_dialog_util.dart'; import 'package:aslan/chatvibe_domain/models/res/room_user_card_res.dart'; import 'package:aslan/chatvibe_managers/rtc_manager.dart'; import '../../../chatvibe_data/models/enum/at_room_roles_type.dart'; class RoomUserCardSetting extends StatefulWidget { String? roomId; RoomUserCardRes? userCardInfo; RoomUserCardSetting({super.key, this.roomId, this.userCardInfo}); @override _RoomUserCardSettingState createState() => _RoomUserCardSettingState(); } class _RoomUserCardSettingState extends State { bool isOnMai = false; bool micMute = false; @override void initState() { super.initState(); isOnMai = Provider.of( context, listen: false, ).userOnMaiInIndex(widget.userCardInfo?.userProfile?.id ?? "") != -1; } @override Widget build(BuildContext context) { List list = []; list.add(SizedBox(height: 10.w)); if (isOnMai) { if (Provider.of(context, listen: false).isFz()) { ///操作的人是房主 list.add( _item(ATAppLocalizations.of(context)!.removeTheMic, null, () { Navigator.of(context).pop(); Provider.of( context, listen: false, ).killXiaMai(widget.userCardInfo?.userProfile?.id ?? ""); }), ); } else { if (widget.userCardInfo?.roomRole != ATRoomRolesType.ADMIN.name && widget.userCardInfo?.roomRole != ATRoomRolesType.HOMEOWNER.name) { list.add( _item(ATAppLocalizations.of(context)!.removeTheMic, null, () { Navigator.of(context).pop(); Provider.of( context, listen: false, ).killXiaMai(widget.userCardInfo?.userProfile?.id ?? ""); }), ); } } } if (Provider.of(context, listen: false).isFz()) { list.add( _item(ATAppLocalizations.of(context)!.setUpAnIdentity, null, () { Navigator.of(context).pop(); showCenterDialog(context, SetRoomRolePage(widget.userCardInfo)); }), ); } if (widget.userCardInfo?.roomRole != ATRoomRolesType.ADMIN.name && widget.userCardInfo?.roomRole != ATRoomRolesType.HOMEOWNER.name) { list.add( _item(ATAppLocalizations.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(ATAppLocalizations.of(context)!.cancel, null, () { Navigator.of(context).pop(); }), ); list.add(SizedBox(height: 10.w)); return SafeArea( child: Container( width: ScreenUtil().screenWidth, decoration: BoxDecoration( borderRadius: BorderRadius.only( topRight: Radius.circular(15.w), topLeft: Radius.circular(15.w), ), color: Colors.white, //gradient: getLinearGradient([0xff5E12A8, 0xff000000], opacity: 0.9), ), 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 == ATAppLocalizations.of(context)!.cancel ? BoxDecoration( color: Color(0xffF2F2F2), 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: msg == 'Cancel' ? Color(0xffB1B1B1) : Colors.black, fontWeight: FontWeight.w400, decoration: TextDecoration.none, ), ), ), ], ), ), ], ), ); } }