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

239 lines
9.4 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/chatvibe_core/constants/at_room_msg_type.dart';
import 'package:aslan/chatvibe_ui/widgets/room/room_msg_item.dart';
import 'package:provider/provider.dart';
import 'package:aslan/app_localizations.dart';
import 'package:aslan/chatvibe_data/sources/local/user_manager.dart';
import 'package:aslan/chatvibe_data/sources/repositories/room_repository_imp.dart';
import 'package:aslan/chatvibe_domain/models/res/room_user_card_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';
import '../../components/at_tts.dart';
import '../../components/text/at_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 = ATAppLocalizations.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: Colors.white,
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 ==
ATRoomRolesType.ADMIN.name) {
ATTts.show(
ATAppLocalizations.of(
context,
)!.alreadyAnAdministrator,
);
return;
}
Navigator.of(context).pop();
ChatRoomRepository()
.changeRoomRole(
roomId,
ATRoomRolesType.ADMIN.name,
widget.userCardInfo?.userProfile?.id ?? "",
AccountStorage()
.getCurrentUser()
?.userProfile
?.id ??
"",
"OTHER_CHANGE",
)
.whenComplete(() {
ATTts.show(optTips);
Msg msg = Msg(
groupId: roomAccount,
msg: 'ADMIN',
toUser: widget.userCardInfo?.userProfile,
type: ATRoomMsgType.roomRoleChange,
);
rtmProvider?.sendMsg(msg, addLocal: true);
});
},
child: Column(
children: [
Image.asset(
"atu_images/room/at_icon_room_gly.png",
width: 30.w,
height: 30.w,
),
SizedBox(height: 10.w),
text(
ATAppLocalizations.of(context)!.admin,
textColor: Color(0xffB1B1B1),
fontSize: 13.sp,
),
],
),
),
),
Expanded(
child: GestureDetector(
behavior: HitTestBehavior.opaque,
child: Column(
children: [
Image.asset(
"atu_images/room/at_icon_room_hy.png",
width: 30.w,
height: 30.w,
),
SizedBox(height: 10.w),
text(
ATAppLocalizations.of(context)!.member,
textColor: Color(0xffB1B1B1),
fontSize: 13.sp,
),
],
),
onTap: () {
if (widget.userCardInfo?.roomRole ==
ATRoomRolesType.MEMBER.name) {
ATTts.show(
ATAppLocalizations.of(context)!.alreadyAnMember,
);
return;
}
Navigator.of(context).pop();
ChatRoomRepository()
.changeRoomRole(
roomId,
ATRoomRolesType.MEMBER.name,
widget.userCardInfo?.userProfile?.id ?? "",
AccountStorage()
.getCurrentUser()
?.userProfile
?.id ??
"",
"OTHER_CHANGE",
)
.whenComplete(() {
ATTts.show(optTips);
Msg msg = Msg(
groupId: roomAccount,
msg: 'MEMBER',
toUser: widget.userCardInfo?.userProfile,
type: ATRoomMsgType.roomRoleChange,
);
rtmProvider?.sendMsg(msg, addLocal: true);
});
},
),
),
Expanded(
child: GestureDetector(
behavior: HitTestBehavior.opaque,
child: Column(
children: [
Image.asset(
"atu_images/room/at_icon_room_guest.png",
width: 30.w,
height: 30.w,
),
SizedBox(height: 10.w),
text(
ATAppLocalizations.of(context)!.guest,
textColor: Color(0xffB1B1B1),
fontSize: 13.sp,
),
],
),
onTap: () {
if (widget.userCardInfo?.roomRole ==
ATRoomRolesType.TOURIST.name) {
ATTts.show(
ATAppLocalizations.of(context)!.alreadyAnTourist,
);
return;
}
Navigator.of(context).pop();
ChatRoomRepository()
.changeRoomRole(
roomId,
ATRoomRolesType.TOURIST.name,
widget.userCardInfo?.userProfile?.id ?? "",
AccountStorage()
.getCurrentUser()
?.userProfile
?.id ??
"",
"OTHER_CHANGE",
)
.whenComplete(() {
ATTts.show(optTips);
Msg msg = Msg(
groupId: roomAccount,
msg: 'TOURIST',
toUser: widget.userCardInfo?.userProfile,
type: ATRoomMsgType.roomRoleChange,
);
rtmProvider?.sendMsg(msg, addLocal: true);
});
},
),
),
],
),
SizedBox(height: 20.w),
],
),
),
),
);
}
}