aslan-flutter/lib/chatvibe_ui/widgets/room/empty_mai_select.dart
2026-07-01 18:25:58 +08:00

326 lines
10 KiB
Dart

import 'dart:ui' as ui;
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:aslan/app_localizations.dart';
import 'package:aslan/chatvibe_domain/models/res/login_res.dart';
import 'package:aslan/chatvibe_ui/widgets/room/room_msg_item.dart';
import 'package:aslan/chatvibe_ui/widgets/room/at_room_user_info_card.dart';
import 'package:provider/provider.dart';
import 'package:aslan/chatvibe_core/constants/at_room_msg_type.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_data/sources/local/user_manager.dart';
import 'package:aslan/chatvibe_domain/models/res/mic_res.dart';
import 'package:aslan/chatvibe_managers/rtc_manager.dart';
import 'package:aslan/chatvibe_managers/rtm_manager.dart';
import '../../../chatvibe_data/models/enum/at_room_roles_type.dart';
class EmptyMaiSelect extends StatelessWidget {
final num index;
final ChatVibeUserProfile? clickUser;
const EmptyMaiSelect({Key? key, required this.index, this.clickUser})
: super(key: key);
@override
Widget build(BuildContext context) {
RtcProvider provider = Provider.of<RtcProvider>(context, listen: false);
List<Widget> list = [];
list.add(SizedBox(height: 10.w));
if (index == -1) {
if (provider.isFz() || provider.isGL()) {
if (clickUser?.id !=
AccountStorage().getCurrentUser()?.userProfile?.id) {
list.add(
_item(
ATAppLocalizations.of(context)!.inviteToTheMicrophone,
"atu_images/room/at_icon_mic_go_up.png",
context,
() {
Navigator.of(context).pop();
Provider.of<RtmProvider>(context, listen: false).sendMsg(
Msg(
groupId:
provider
.currenRoom
?.roomProfile
?.roomProfile
?.roomAccount ??
"",
msg:
AccountStorage()
.getCurrentUser()
?.userProfile
?.userNickname,
role: AccountStorage().getCurrentUser()?.userProfile?.id,
type: ATRoomMsgType.bsm,
toUser: clickUser,
),
addLocal: false,
);
},
),
);
}
}
} else {
MicRes? userWheat = provider.roomWheatMap[index];
if (userWheat?.user?.id ==
AccountStorage().getCurrentUser()?.userProfile?.id) {
if (provider.isFz()) {
///点击的是自己
if (userWheat?.micMute ?? false) {
list.add(
_item(
ATAppLocalizations.of(context)!.openTheMic,
"atu_images/room/at_icon_mic_open.png",
context,
() {
Navigator.of(context).pop();
provider.jieJinMai(index);
},
),
);
} else {
list.add(
_item(
ATAppLocalizations.of(context)!.muteTheMic,
"atu_images/room/at_icon_mic_mute.png",
context,
() {
Navigator.of(context).pop();
provider.jinMai(index);
},
),
);
}
}
list.add(
_item(
ATAppLocalizations.of(context)!.leavelTheMic,
"atu_images/room/at_icon_mic_leavel.png",
context,
() {
Navigator.of(context).pop();
provider.xiaMai(index);
},
),
);
} else {
if (provider.isFz() || provider.isGL()) {
///操作的人是房主,并且座位没人
if (clickUser == null) {
if (!(userWheat?.micLock ?? false)) {
list.add(
_item(
ATAppLocalizations.of(context)!.takeTheMic,
"atu_images/room/at_icon_mic_go_up.png",
context,
() {
Navigator.of(context).pop();
provider.shangMai(index);
},
),
);
}
if ((userWheat?.micLock ?? false)) {
list.add(
_item(
ATAppLocalizations.of(context)!.unlockTheMic,
"atu_images/room/at_icon_mic_unlock.png",
context,
() {
Navigator.of(context).pop();
provider.jieFeng(index);
},
),
);
} else {
list.add(
_item(
ATAppLocalizations.of(context)!.lockTheMic,
"atu_images/room/at_icon_mic_lock.png",
context,
() {
Navigator.of(context).pop();
provider.fengMai(index);
},
),
);
}
}
if (clickUser?.roles == ATRoomRolesType.HOMEOWNER.name ||
clickUser?.roles == ATRoomRolesType.ADMIN.name) {
if (provider.isFz()) {
if (userWheat?.micMute ?? false) {
list.add(
_item(
ATAppLocalizations.of(context)!.openTheMic,
"atu_images/room/at_icon_mic_open.png",
context,
() {
Navigator.of(context).pop();
provider.jieJinMai(index);
},
),
);
} else {
list.add(
_item(
ATAppLocalizations.of(context)!.muteTheMic,
"atu_images/room/at_icon_mic_mute.png",
context,
() {
Navigator.of(context).pop();
provider.jinMai(index);
},
),
);
}
}
} else {
if (userWheat?.micMute ?? false) {
list.add(
_item(
ATAppLocalizations.of(context)!.openTheMic,
"atu_images/room/at_icon_mic_open.png",
context,
() {
Navigator.of(context).pop();
provider.jieJinMai(index);
},
),
);
} else {
list.add(
_item(
ATAppLocalizations.of(context)!.muteTheMic,
"atu_images/room/at_icon_mic_mute.png",
context,
() {
Navigator.of(context).pop();
provider.jinMai(index);
},
),
);
}
}
} else {
if (userWheat?.user == null) {
if (!(userWheat?.micLock ?? false)) {
list.add(
_item(
ATAppLocalizations.of(context)!.takeTheMic,
"atu_images/room/at_icon_mic_go_up.png",
context,
() {
Navigator.of(context).pop();
provider.shangMai(index);
},
),
);
} else {
// list.add(
// _item('Leavel the mic ', "atu_images/room/at_icon_mic_leavel.png", () {
// Navigator.of(context).pop();
// provider.xiaMai(index);
// }),
// );
}
}
}
}
}
if (clickUser != null) {
list.add(
_item(
ATAppLocalizations.of(context)!.openUserProfleCard,
"atu_images/room/at_icon_open_card.png",
context,
() {
Navigator.of(context).pop();
showBottomInBottomDialog(
context!,
ATRoomUserInfoCard(userId: clickUser?.id),
);
},
),
);
}
list.add(
_item(ATAppLocalizations.of(context)!.cancel, null, context, () {
Navigator.of(context).pop();
}),
);
list.add(SizedBox(height: 10.w));
return SafeArea(
child: Container(
width: ScreenUtil().screenWidth,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(12.w),
topRight: Radius.circular(12.w),
),
),
child: Column(children: list),
),
);
}
Widget _item(
String msg,
String? icon,
BuildContext context,
Function onClick,
) {
return GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () {
onClick();
},
child: Column(
children: <Widget>[
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: [
Container(
alignment: Alignment.center,
child: Text(
msg,
style: TextStyle(
fontSize: sp(16),
color:
msg == ATAppLocalizations.of(context)!.cancel
? Color(0xffB1B1B1)
: Colors.black,
fontWeight: FontWeight.w400,
decoration: TextDecoration.none,
),
),
),
],
),
),
],
),
);
}
}