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

162 lines
5.1 KiB
Dart

import 'dart:convert';
import 'package:aslan/chatvibe_ui/theme/chatvibe_theme.dart';
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_ui/components/at_debounce_widget.dart';
import 'package:aslan/chatvibe_ui/components/text/at_text.dart';
import 'package:aslan/chatvibe_data/sources/local/user_manager.dart';
import 'package:aslan/chatvibe_domain/models/res/room_res.dart';
import 'package:provider/provider.dart';
import 'package:aslan/chatvibe_ui/components/at_float_ichart.dart';
import 'package:aslan/chatvibe_core/routes/at_routes.dart';
import 'package:aslan/chatvibe_core/routes/at_fluro_navigator.dart';
import 'package:aslan/chatvibe_data/sources/repositories/user_repository_impl.dart';
import 'package:aslan/chatvibe_domain/models/res/at_user_identity_res.dart';
import 'package:aslan/chatvibe_managers/gift_animation_manager.dart';
import 'package:aslan/chatvibe_managers/rtc_manager.dart';
import 'package:aslan/chatvibe_managers/user_profile_manager.dart';
import 'package:aslan/chatvibe_features/index/main_route.dart';
class ExitMinRoomPage extends StatefulWidget {
bool isFz;
String roomId;
ExitMinRoomPage(this.isFz, this.roomId);
@override
_ExitMinRoomPageState createState() => _ExitMinRoomPageState();
}
class _ExitMinRoomPageState extends State<ExitMinRoomPage> {
ATUserIdentityRes? userIdentity;
bool isLoading = true;
@override
void initState() {
super.initState();
AccountRepository()
.userIdentity(
userId:
Provider.of<RtcProvider>(
context,
listen: false,
).currenRoom?.roomProfile?.roomProfile?.userId,
)
.then((v) {
userIdentity = v;
isLoading = false;
setState(() {});
})
.catchError((e) {
isLoading = false;
setState(() {});
});
}
@override
Widget build(BuildContext context) {
return Stack(
alignment: Alignment.center,
children: [
ATDebounceWidget(
child: Container(color: Colors.transparent),
onTap: () {
Navigator.of(context).pop();
},
),
Column(
spacing: 40.w,
mainAxisAlignment: MainAxisAlignment.center,
children: [
!widget.isFz
? ATDebounceWidget(
child: Column(
children: [
Image.asset(
"atu_images/room/at_icon_room_report.png",
height: 48.w,
width: 48.w,
),
SizedBox(height: 8.w),
text(
ATAppLocalizations.of(context)!.report,
textColor: ChatVibeTheme.primaryLight,
fontSize: 13.sp,
fontWeight: FontWeight.w500,
),
],
),
onTap: () {
ATNavigatorUtils.push(
context,
"${MainRoute.report}?type=room&tageId=${widget.roomId}",
replace: false,
);
},
)
: Container(),
ATDebounceWidget(
child: Column(
children: [
Image.asset(
"atu_images/room/at_icon_min_room.png",
width: 48.w,
height: 48.w,
),
SizedBox(height: 8.w),
text(
ATAppLocalizations.of(context)!.mInimize,
fontSize: 15.sp,
textColor: ChatVibeTheme.primaryLight,
fontWeight: FontWeight.w500,
),
],
),
onTap: () {
ATFloatIchart().show();
ATNavigatorUtils.popUntil(
context,
ModalRoute.withName(ATRoutes.home),
);
Provider.of<GiftAnimationManager>(
context,
listen: false,
).disposeAnim();
},
),
ATDebounceWidget(
child: Column(
children: [
Image.asset(
"atu_images/room/at_icon_exit_room.png",
width: 48.w,
height: 48.w,
),
SizedBox(height: 8.w),
text(
ATAppLocalizations.of(context)!.exit,
fontSize: 15.sp,
textColor: ChatVibeTheme.primaryLight,
fontWeight: FontWeight.w500,
),
],
),
onTap: () {
ATNavigatorUtils.goBack(context);
Provider.of<RtcProvider>(
context,
listen: false,
).extRoom(false);
},
),
],
),
],
);
}
}