import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:get/get_core/src/get_main.dart'; import 'package:location/data/bean/message_info.dart'; import 'package:location/utils/common_expand.dart'; import '../../resource/assets.gen.dart'; import '../../resource/colors.gen.dart'; import '../../resource/string.gen.dart'; import '../../utils/date_util.dart'; typedef MessageFunCallback = void Function(MessageInfo info); Widget buildMessageInfoItem(MessageInfo item,MessageFunCallback callback,{VoidCallback? onReportEvent,bool? isShowReportButton}) { return buildMessageItem(Assets.images.iconDefaultFriendAvatar.provider(), title: item.senderPhone ?? '', content: getMessageContentTxt(item.type), contentTextStyle: getMessageContentTextStyle(item.type), createTime: item.createTime, bgGradient: getMessageBgGradient(item.type), onReportEvent: onReportEvent, isShowReportButton: isShowReportButton ?? false, statusWidget: getMessageStatusWidget(item.type, funClick: () { callback(item); })); } // 2:你的好友请求已经被接受 // 3:你的好友请求已经被拒绝 // 4:好友发来的求救 // 5:你的好友删除了你 Widget getMessageStatusWidget(int type, {VoidCallback? funClick}) { if (type == 2) { return Container( decoration: BoxDecoration( color: '#1F15CB4C'.color, borderRadius: BorderRadius.circular(4.w)), padding: EdgeInsets.symmetric(horizontal: 5.w, vertical: 3.w), child: Text(StringName.newsRequestAgree, style: TextStyle(fontSize: 12.sp, color: '#00BB70'.color, height: 1)), ); } else if (type == 3) { return Container( decoration: BoxDecoration( color: '#1FCB1515'.color, borderRadius: BorderRadius.circular(4.w)), padding: EdgeInsets.symmetric(horizontal: 5.w, vertical: 3.w), child: Text(StringName.newsRequestDisagree, style: TextStyle(fontSize: 12.sp, color: '#FF2125'.color, height: 1)), ); } else if (type == 4) { return GestureDetector( onTap: funClick, child: Container( width: 79.w, height: 28.w, decoration: BoxDecoration( color: '#FF5555'.color, borderRadius: BorderRadius.circular(100.w)), child: Center( child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Assets.images.iconMessageFriendHelp .image(width: 12.w, height: 12.w), SizedBox(width: 2.w), Text(StringName.newsToContact, style: TextStyle(fontSize: 13.sp, color: ColorName.white)) ], ), ), ), ); } return SizedBox.shrink(); } // 2:你的好友请求已经被接受 // 3:你的好友请求已经被拒绝 // 4:好友发来的求救 // 5:你的好友删除了你 String getMessageContentTxt(int type) { if (type == 2) { return StringName.messageAccepted; } else if (type == 3) { return StringName.messageRejected; } else if (type == 4) { return StringName.messageTryForHelp; } else if (type == 5) { return StringName.messageDeleteYour; } return ''; } // 2:你的好友请求已经被接受 // 3:你的好友请求已经被拒绝 // 4:好友发来的求救 // 5:你的好友删除了你 TextStyle getMessageContentTextStyle(int type) { if (type == 4) { return TextStyle(fontSize: 13.sp, color: '#A7A7A7'.color); } return TextStyle(fontSize: 13.sp, color: ColorName.black50); } Gradient? getMessageBgGradient(int type) { if (type == 4) { return LinearGradient(colors: ['#00FF5555'.color, '#38FF5555'.color]); } return null; } Widget buildMessageItem(ImageProvider avatar, {required String title, required String content, required TextStyle contentTextStyle, required int createTime, required Widget statusWidget, bool? isShowReportButton, VoidCallback? onReportEvent, Gradient? bgGradient}) { return Container( decoration: BoxDecoration( color: ColorName.white, borderRadius: BorderRadius.circular(14.w), boxShadow: [ BoxShadow( color: ColorName.black.withOpacity(0.08), offset: Offset(2, 2), blurRadius: 10, ) ]), margin: EdgeInsets.only(left: 12.w, right: 12.w, bottom: 10.w), child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(14.w), gradient: bgGradient, ), padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 10.w), child: Row( children: [ Image(image: avatar, width: 46.w, height: 46.w), SizedBox(width: 10.w), Expanded( child: Column( children: [ Row( children: [ Text( title, style: TextStyle( fontSize: 16.sp, color: '#202020'.color, fontWeight: FontWeight.bold), ), Spacer(), Text( createTime == 0 ? '' : DateUtil.fromMillisecondsSinceEpoch( "yyyy-MM-dd HH:mm", createTime), style: TextStyle(fontSize: 12.sp, color: '#A7A7A7'.color), ) ], ), SizedBox(height: 7.w), Row( children: [ Expanded(child: Text(content, style: contentTextStyle)), SizedBox(width: 16.w), statusWidget ], ), if (isShowReportButton?? false) Column( crossAxisAlignment: CrossAxisAlignment.end, children: [ SizedBox(height: 7.w), GestureDetector( onTap: onReportEvent, child: Container( width: MediaQuery.of(Get.context!).size.width, alignment: Alignment.centerRight, child: Container( width: 100.w, height: 32.w, decoration: BoxDecoration( color: "#7B7DFF".color, borderRadius: BorderRadius.all(Radius.circular(32.w/2)) ), alignment: Alignment.center, //color: Colors.orange, child: Container( child: Text("举报",style: TextStyle( fontSize: 15.sp, color: "#FFFFFF".color, fontWeight: FontWeight.w500 ), ), ), ), ), ), ], ) ], )) ], ), ), ); }