118 lines
4.7 KiB
Dart
118 lines
4.7 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_svg/flutter_svg.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:taafee_mobile/common/const/const.dart';
|
|
import 'package:taafee_mobile/common/extensions/widget_extension.dart';
|
|
import 'package:taafee_mobile/common/widgets/text.dart';
|
|
import 'package:taafee_mobile/common/widgets/toast.dart';
|
|
import 'package:taafee_mobile/core/routing/routing_manager.dart';
|
|
import 'package:taafee_mobile/features/chat/data_layer/model/chat_user.dart';
|
|
import 'package:taafee_mobile/features/chat/presentation_layer/widgets/circle_avatar.dart';
|
|
import 'package:taafee_mobile/features/home/business_logic_layer/home_controller.dart';
|
|
import '../../business logic layer/chat_controller.dart';
|
|
import '../../data_layer/model/room.dart';
|
|
|
|
// ignore: must_be_immutable
|
|
class AppBarChatWidget extends StatelessWidget implements PreferredSizeWidget {
|
|
@override
|
|
Size get preferredSize => const Size.fromHeight(100);
|
|
final HomeController homeController = Get.find<HomeController>();
|
|
final ChatController chatController = Get.find<ChatController>();
|
|
final RoomType roomType;
|
|
AppBarChatWidget(
|
|
{super.key, required this.chatUser, this.avatar, required this.roomType});
|
|
ChatUser? chatUser;
|
|
final String? avatar;
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Container(
|
|
color: Colors.white,
|
|
width: Get.width,
|
|
height: 70,
|
|
child: Column(
|
|
children: [
|
|
Row(
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
children: [
|
|
Obx(() => (!homeController.isArabic.value)
|
|
? SvgPicture.asset("assets/icons/arrow-left.svg")
|
|
: SvgPicture.asset("assets/icons/arrow right.svg")).onTap(
|
|
() {
|
|
if (roomType == RoomType.private) {
|
|
chatController.updateRoom();
|
|
}
|
|
|
|
RoutingManager.back();
|
|
},
|
|
).expanded(Responsive.isTablet() ? 0 : 1),
|
|
if (Responsive.isTablet())
|
|
const SizedBox(
|
|
width: 12,
|
|
),
|
|
CircleAvatarWidget(
|
|
isUserAvatar: false,
|
|
avatarImageLink: avatar,
|
|
radius: 26,
|
|
).expanded(Responsive.isTablet() ? 0 : 2),
|
|
if (Responsive.isTablet())
|
|
const SizedBox(
|
|
width: 12,
|
|
),
|
|
BoldTextWidget(
|
|
chatUser?.name ?? ('support'.tr),
|
|
color: AppColors.textColor,
|
|
fontSize: 14,
|
|
).expanded(Responsive.isTablet() ? 0 : 6),
|
|
if (Responsive.isTablet()) Container().expanded(8),
|
|
Obx(() {
|
|
return Visibility(
|
|
visible: chatController.currentRoom.value!.state ==
|
|
RoomState.active,
|
|
child: PopupMenuButton(
|
|
position: PopupMenuPosition.under,
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.circular(12),
|
|
),
|
|
itemBuilder: (context) {
|
|
return <PopupMenuItem>[
|
|
PopupMenuItem(
|
|
onTap: () {
|
|
if (chatController.connectionState.value ==
|
|
SocketConnectionState.connected) {
|
|
chatController.blockRoom(onSuccess: () {
|
|
// RoutingManager.back();
|
|
});
|
|
} else {
|
|
Toast.showToast(
|
|
'you_have_no_internet_connection'.tr);
|
|
}
|
|
},
|
|
child: Row(
|
|
children: [
|
|
Icon(
|
|
Icons.block,
|
|
color: AppColors.textColor,
|
|
),
|
|
const SizedBox(
|
|
width: 8,
|
|
),
|
|
BoldTextWidget(
|
|
'Block User',
|
|
color: AppColors.textColor,
|
|
),
|
|
],
|
|
)),
|
|
];
|
|
}),
|
|
);
|
|
})
|
|
],
|
|
)
|
|
.paddingSymmetric(horizontal: 10, vertical: 4)
|
|
.expanded(Responsive.isTablet() ? 4 : 4),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|