chatapp3-flutter/lib/ui_kit/widgets/room/set_room_role_page.dart
2026-04-09 21:32:23 +08:00

221 lines
9.0 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:yumi/app/constants/sc_room_msg_type.dart';
import 'package:yumi/ui_kit/widgets/room/room_msg_item.dart';
import 'package:provider/provider.dart';
import 'package:yumi/app_localizations.dart';
import 'package:yumi/shared/data_sources/sources/local/user_manager.dart';
import 'package:yumi/shared/data_sources/sources/repositories/sc_room_repository_imp.dart';
import 'package:yumi/shared/business_logic/models/res/room_user_card_res.dart';
import 'package:yumi/services/audio/rtc_manager.dart';
import 'package:yumi/services/audio/rtm_manager.dart';
import '../../../shared/data_sources/models/enum/sc_room_roles_type.dart';
import '../../components/sc_tts.dart';
import '../../components/text/sc_text.dart';
class SetRoomRolePage extends StatefulWidget {
RoomUserCardRes? userCardInfo;
SetRoomRolePage(this.userCardInfo);
@override
_SetRoomRolePageState createState() => _SetRoomRolePageState();
}
class _SetRoomRolePageState extends State<SetRoomRolePage> {
String roomId = "";
String roomAccount = "";
String optTips = "";
RtmProvider? rtmProvider;
@override
void initState() {
super.initState();
roomId =
Provider.of<RtcProvider>(
context,
listen: false,
).currenRoom?.roomProfile?.roomProfile?.id ??
"";
rtmProvider = Provider.of<RtmProvider>(
context,
listen: false,
);
roomAccount =
Provider.of<RtcProvider>(
context,
listen: false,
).currenRoom?.roomProfile?.roomProfile?.roomAccount ??
"";
}
@override
Widget build(BuildContext context) {
optTips = SCAppLocalizations.of(context)!.operationSuccessful;
return ClipRect(
child: BackdropFilter(
filter: ui.ImageFilter.blur(sigmaX: 15, sigmaY: 15),
child: Container(
width: ScreenUtil().screenWidth * 0.75,
padding: EdgeInsets.symmetric(horizontal: 10.w),
decoration: BoxDecoration(
color: Color(0xff09372E).withOpacity(0.5),
borderRadius: BorderRadius.all(Radius.circular(12.w)),
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
SizedBox(height: 18.w),
Row(
children: [
Expanded(
child: GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () {
if(widget.userCardInfo?.roomRole==SCRoomRolesType.ADMIN.name){
SCTts.show(SCAppLocalizations.of(context)!.alreadyAnAdministrator);
return;
}
Navigator.of(context).pop();
SCChatRoomRepository()
.changeRoomRole(
roomId,
SCRoomRolesType.ADMIN.name,
widget.userCardInfo?.userProfile?.id ?? "",
AccountStorage().getCurrentUser()?.userProfile?.id ??
"",
"OTHER_CHANGE",
)
.whenComplete(() {
SCTts.show(optTips);
Msg msg = Msg(
groupId: roomAccount,
msg: 'ADMIN',
toUser: widget.userCardInfo?.userProfile,
type: SCRoomMsgType.roomRoleChange,
);
rtmProvider?.dispatchMessage(msg, addLocal: true);
});
},
child: Column(
children: [
Image.asset(
"sc_images/room/sc_icon_room_gly.png",
width: 30.w,
height: 30.w,
),
SizedBox(height: 10.w),
text(
SCAppLocalizations.of(context)!.admin,
textColor: Color(0xffB1B1B1),
fontSize: 13.sp,
),
],
),
),
),
Expanded(
child: GestureDetector(
behavior: HitTestBehavior.opaque,
child: Column(
children: [
Image.asset(
"sc_images/room/sc_icon_room_hy.png",
width: 30.w,
height: 30.w,
),
SizedBox(height: 10.w),
text(
SCAppLocalizations.of(context)!.member,
textColor: Color(0xffB1B1B1),
fontSize: 13.sp,
),
],
),
onTap: () {
if(widget.userCardInfo?.roomRole==SCRoomRolesType.MEMBER.name){
SCTts.show(SCAppLocalizations.of(context)!.alreadyAnMember);
return;
}
Navigator.of(context).pop();
SCChatRoomRepository()
.changeRoomRole(
roomId,
SCRoomRolesType.MEMBER.name,
widget.userCardInfo?.userProfile?.id ?? "",
AccountStorage().getCurrentUser()?.userProfile?.id ??
"",
"OTHER_CHANGE",
)
.whenComplete(() {
SCTts.show(optTips);
Msg msg = Msg(
groupId: roomAccount,
msg: 'MEMBER',
toUser: widget.userCardInfo?.userProfile,
type: SCRoomMsgType.roomRoleChange,
);
rtmProvider?.dispatchMessage(msg, addLocal: true);
});
},
),
),
Expanded(
child: GestureDetector(
behavior: HitTestBehavior.opaque,
child: Column(
children: [
Image.asset(
"sc_images/room/sc_icon_room_guest.png",
width: 30.w,
height: 30.w,
),
SizedBox(height: 10.w),
text(
SCAppLocalizations.of(context)!.guest,
textColor: Color(0xffB1B1B1),
fontSize: 13.sp,
),
],
),
onTap: () {
if(widget.userCardInfo?.roomRole==SCRoomRolesType.TOURIST.name){
SCTts.show(SCAppLocalizations.of(context)!.alreadyAnTourist);
return;
}
Navigator.of(context).pop();
SCChatRoomRepository()
.changeRoomRole(
roomId,
SCRoomRolesType.TOURIST.name,
widget.userCardInfo?.userProfile?.id ?? "",
AccountStorage().getCurrentUser()?.userProfile?.id ??
"",
"OTHER_CHANGE",
)
.whenComplete(() {
SCTts.show(optTips);
Msg msg = Msg(
groupId: roomAccount,
msg: 'TOURIST',
toUser: widget.userCardInfo?.userProfile,
type: SCRoomMsgType.roomRoleChange,
);
rtmProvider?.dispatchMessage(msg, addLocal: true);
});
},
),
),
],
),
SizedBox(height: 20.w),
],
),
),
),
);
}
}