Browse Source

增加月任务展示

dev-2.0
王子贤 1 month ago
parent
commit
e402dca8d0
10 changed files with 368 additions and 123 deletions
  1. 4
      lib/controller/discover/room_controller.dart
  2. 4
      lib/model/home/user_info_data.dart
  3. 4
      lib/model/live/live_chat_message.dart
  4. 4
      lib/pages/discover/settlement_page.dart
  5. 5
      lib/service/live_chat_message_service.dart
  6. 56
      lib/widget/live/live_room_anchor_showcase.dart
  7. 35
      lib/widget/live/live_room_chat_item.dart
  8. 2
      lib/widget/live/live_room_notice_chat_panel.dart
  9. 375
      lib/widget/live/live_room_user_profile_dialog.dart
  10. 2
      lib/widget/live/month_task_dialog.dart

4
lib/controller/discover/room_controller.dart

@ -316,10 +316,10 @@ class RoomController extends GetxController with WidgetsBindingObserver {
final taskData = TaskData().obs; final taskData = TaskData().obs;
getTaskData() async {
getTaskData(int type) async {
try{ try{
final response = await _networkService.userApi.userGetUserTaskComplete( final response = await _networkService.userApi.userGetUserTaskComplete(
taskType: 1,
taskType: type,
); );
if (response.data.isSuccess) { if (response.data.isSuccess) {
if(response.data.data == null){ if(response.data.data == null){

4
lib/model/home/user_info_data.dart

@ -1,6 +1,7 @@
class UserInfoData { class UserInfoData {
String? id; String? id;
bool? isDelete; bool? isDelete;
bool? isFriend;
String? createTime; String? createTime;
String? updateTime; String? updateTime;
Null? event; Null? event;
@ -99,6 +100,7 @@ class UserInfoData {
UserInfoData( UserInfoData(
{this.id, {this.id,
this.isDelete, this.isDelete,
this.isFriend,
this.createTime, this.createTime,
this.updateTime, this.updateTime,
this.event, this.event,
@ -197,6 +199,7 @@ class UserInfoData {
UserInfoData.fromJson(Map<String, dynamic> json) { UserInfoData.fromJson(Map<String, dynamic> json) {
id = json['id']; id = json['id'];
isDelete = json['isDelete']; isDelete = json['isDelete'];
isFriend = json['isFriend'];
createTime = json['createTime']; createTime = json['createTime'];
updateTime = json['updateTime']; updateTime = json['updateTime'];
event = json['event']; event = json['event'];
@ -309,6 +312,7 @@ class UserInfoData {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id; data['id'] = this.id;
data['isDelete'] = this.isDelete; data['isDelete'] = this.isDelete;
data['isFriend'] = this.isFriend;
data['createTime'] = this.createTime; data['createTime'] = this.createTime;
data['updateTime'] = this.updateTime; data['updateTime'] = this.updateTime;
data['event'] = this.event; data['event'] = this.event;

4
lib/model/live/live_chat_message.dart

@ -4,6 +4,7 @@ class LiveChatMessage {
final int? uid; final int? uid;
final String userName; final String userName;
final String? avatar; final String? avatar;
final String? miId;
final String content; final String content;
final int timestamp; final int timestamp;
@ -11,6 +12,7 @@ class LiveChatMessage {
required this.userId, required this.userId,
required this.userName, required this.userName,
this.avatar, this.avatar,
this.miId,
this.uid, this.uid,
required this.content, required this.content,
required this.timestamp, required this.timestamp,
@ -21,6 +23,7 @@ class LiveChatMessage {
userId: json['userId'], userId: json['userId'],
userName: json['userName'], userName: json['userName'],
avatar: json['avatar'], avatar: json['avatar'],
miId: json['miId'],
uid: json['uid'], uid: json['uid'],
content: json['content'], content: json['content'],
timestamp: json['timestamp'], timestamp: json['timestamp'],
@ -32,6 +35,7 @@ class LiveChatMessage {
'userId': userId, 'userId': userId,
'userName': userName, 'userName': userName,
'avatar': avatar, 'avatar': avatar,
'miId': miId,
'content': content, 'content': content,
'timestamp': timestamp, 'timestamp': timestamp,
}; };

4
lib/pages/discover/settlement_page.dart

@ -229,7 +229,7 @@ class _SettlementPageState extends State<SettlementPage> {
).onTap(() async { ).onTap(() async {
try{ try{
await _roomController.getTaskData();
await _roomController.getTaskData(1);
FocusScope.of(context).unfocus(); FocusScope.of(context).unfocus();
// overlay // overlay
@ -260,7 +260,7 @@ class _SettlementPageState extends State<SettlementPage> {
width: 325.w, width: 325.w,
).onTap(() async { ).onTap(() async {
try{ try{
await _roomController.getTaskData();
await _roomController.getTaskData(3);
FocusScope.of(context).unfocus(); FocusScope.of(context).unfocus();
// overlay // overlay

5
lib/service/live_chat_message_service.dart

@ -161,9 +161,13 @@ class LiveChatMessageService {
final avatar = userData?.profilePhoto; final avatar = userData?.profilePhoto;
RoomController controller = Get.find<RoomController>(); RoomController controller = Get.find<RoomController>();
final uid = controller.rtcChannel.value?.uid; final uid = controller.rtcChannel.value?.uid;
print(userId);
print(userData?.id);
print("userData?.id");
return { return {
'type': 'chat_message', 'type': 'chat_message',
'userId': userId, 'userId': userId,
'miId': userData?.id,
'userName': userName, 'userName': userName,
'uid': uid, 'uid': uid,
'avatar': avatar, 'avatar': avatar,
@ -254,6 +258,7 @@ class LiveChatMessageService {
userId: messageData['userId'] as String, userId: messageData['userId'] as String,
userName: messageData['userName'] as String, userName: messageData['userName'] as String,
avatar: messageData['avatar'] as String?, avatar: messageData['avatar'] as String?,
miId: messageData['miId'] as String?,
content: messageData['content'] as String, content: messageData['content'] as String,
timestamp: messageData['timestamp'] as int, timestamp: messageData['timestamp'] as int,
); );

56
lib/widget/live/live_room_anchor_showcase.dart

@ -4,6 +4,7 @@ import 'package:dating_touchme_app/controller/global.dart';
import 'package:dating_touchme_app/extension/ex_widget.dart'; import 'package:dating_touchme_app/extension/ex_widget.dart';
import 'package:dating_touchme_app/generated/assets.dart'; import 'package:dating_touchme_app/generated/assets.dart';
import 'package:dating_touchme_app/model/rtc/rtc_channel_detail.dart'; import 'package:dating_touchme_app/model/rtc/rtc_channel_detail.dart';
import 'package:dating_touchme_app/network/user_api.dart';
import 'package:dating_touchme_app/rtc/rtc_manager.dart'; import 'package:dating_touchme_app/rtc/rtc_manager.dart';
import 'package:dating_touchme_app/widget/live/live_gift_popup.dart'; import 'package:dating_touchme_app/widget/live/live_gift_popup.dart';
import 'package:dating_touchme_app/widget/live/live_room_guest_list_dialog.dart'; import 'package:dating_touchme_app/widget/live/live_room_guest_list_dialog.dart';
@ -335,13 +336,13 @@ class _LiveRoomAnchorShowcaseState extends State<LiveRoomAnchorShowcase> {
), ),
), ),
), ),
if(!isCurrentUser && userInfo.isFriend != true)
if(userInfo.isFriend != true)
Positioned( Positioned(
bottom: 5.w, bottom: 5.w,
right: 5.w, right: 5.w,
child: Row( child: Row(
children: [ children: [
GestureDetector(
if(!isCurrentUser) GestureDetector(
onTap: (){ onTap: (){
if(userInfo.isFriend == true){ if(userInfo.isFriend == true){
return; return;
@ -368,7 +369,7 @@ class _LiveRoomAnchorShowcaseState extends State<LiveRoomAnchorShowcase> {
), ),
), ),
), ),
SizedBox(width: 5.w,),
if(!isCurrentUser) SizedBox(width: 5.w,),
Container( Container(
width: 20.w, width: 20.w,
height: 20.w, height: 20.w,
@ -421,27 +422,48 @@ class _LiveRoomAnchorShowcaseState extends State<LiveRoomAnchorShowcase> {
); );
}, },
), ),
).onTap(() {
).onTap(() async {
// //
final currentUserId = GlobalData().userId ?? GlobalData().userData?.id; final currentUserId = GlobalData().userId ?? GlobalData().userData?.id;
if (currentUserId != null && currentUserId == userInfo.userId) { if (currentUserId != null && currentUserId == userInfo.userId) {
// //
return; return;
} }
//
showUserProfileDialog(
context,
LiveChatMessage(
userId: userInfo.userId,
uid: userInfo.uid,
userName: userInfo.nickName,
avatar: userInfo.profilePhoto,
content: "",
timestamp: 0
),
() =>
try {
final _userApi = Get.find<UserApi>();
final response = await _userApi.getDongwoMarriageInformationDetail(miId: userInfo.miId);
if (response.data.isSuccess && response.data.data != null) {
//
showUserProfileDialog(
context,
LiveChatMessage(
userId: userInfo.userId,
uid: userInfo.uid,
userName: userInfo.nickName,
avatar: userInfo.profilePhoto,
miId: userInfo.miId,
content: "",
timestamp: 0
),
() =>
_showGiftPopupForUser(userInfo, 1), _showGiftPopupForUser(userInfo, 1),
);
response.data.data!
);
} else {
//
final errorMsg = response.data.message ?? '获取数据失败';
SmartDialog.showToast(errorMsg);
}
} catch(e, stackTrace){
print('获取用户信息失败: $e');
print('堆栈跟踪: $stackTrace');
SmartDialog.showToast('获取用户信息失败,请稍后重试');
// rethrow退
}
}), }),
SizedBox(width: 5.w), SizedBox(width: 5.w),
SizedBox( SizedBox(

35
lib/widget/live/live_room_chat_item.dart

@ -3,6 +3,7 @@ import 'package:dating_touchme_app/controller/global.dart';
import 'package:dating_touchme_app/extension/ex_widget.dart'; import 'package:dating_touchme_app/extension/ex_widget.dart';
import 'package:dating_touchme_app/generated/assets.dart'; import 'package:dating_touchme_app/generated/assets.dart';
import 'package:dating_touchme_app/model/live/live_chat_message.dart'; import 'package:dating_touchme_app/model/live/live_chat_message.dart';
import 'package:dating_touchme_app/network/user_api.dart';
import 'package:dating_touchme_app/widget/live/live_gift_popup.dart'; import 'package:dating_touchme_app/widget/live/live_gift_popup.dart';
import 'package:dating_touchme_app/widget/live/live_room_user_profile_dialog.dart'; import 'package:dating_touchme_app/widget/live/live_room_user_profile_dialog.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -80,19 +81,41 @@ class LiveRoomChatItem extends StatelessWidget {
width: 25.w, width: 25.w,
height: 25.w, height: 25.w,
), ),
).onTap(() {
).onTap(() async {
// //
final currentUserId = GlobalData().userId ?? GlobalData().userData?.id; final currentUserId = GlobalData().userId ?? GlobalData().userData?.id;
if (currentUserId != null && currentUserId == message.userId) { if (currentUserId != null && currentUserId == message.userId) {
// //
return; return;
} }
try {
final _userApi = Get.find<UserApi>();
final response = await _userApi.getDongwoMarriageInformationDetail(miId: message.miId ?? "");
if (response.data.isSuccess && response.data.data != null) {
showUserProfileDialog(
context,
message,
() => _showGiftPopup(context, 1),
response.data.data!
);
} else {
//
final errorMsg = response.data.message ?? '获取数据失败';
SmartDialog.showToast(errorMsg);
}
} catch(e, stackTrace){
print('获取用户信息失败: $e');
print('堆栈跟踪: $stackTrace');
SmartDialog.showToast('获取用户信息失败,请稍后重试');
// rethrow退
}
// //
showUserProfileDialog(
context,
message,
() => _showGiftPopup(context, 1),
);
}) })
: Image.asset( : Image.asset(
Assets.imagesUserAvatar, Assets.imagesUserAvatar,

2
lib/widget/live/live_room_notice_chat_panel.dart

@ -222,7 +222,7 @@ class _LiveRoomNoticeChatPanelState extends State<LiveRoomNoticeChatPanel> {
// //
try{ try{
await roomController.getTaskData();
await roomController.getTaskData(1);
FocusScope.of(context).unfocus(); FocusScope.of(context).unfocus();
// overlay // overlay

375
lib/widget/live/live_room_user_profile_dialog.dart

@ -2,6 +2,7 @@ import 'package:dating_touchme_app/controller/discover/room_controller.dart';
import 'package:dating_touchme_app/controller/overlay_controller.dart'; import 'package:dating_touchme_app/controller/overlay_controller.dart';
import 'package:dating_touchme_app/extension/ex_widget.dart'; import 'package:dating_touchme_app/extension/ex_widget.dart';
import 'package:dating_touchme_app/generated/assets.dart'; import 'package:dating_touchme_app/generated/assets.dart';
import 'package:dating_touchme_app/model/home/user_info_data.dart';
import 'package:dating_touchme_app/model/live/live_chat_message.dart'; import 'package:dating_touchme_app/model/live/live_chat_message.dart';
import 'package:dating_touchme_app/pages/message/chat_page.dart'; import 'package:dating_touchme_app/pages/message/chat_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -14,6 +15,7 @@ void showUserProfileDialog(
BuildContext context, BuildContext context,
LiveChatMessage message, LiveChatMessage message,
VoidCallback onShowGiftPopup, VoidCallback onShowGiftPopup,
UserInfoData userData,
) { ) {
@ -33,7 +35,7 @@ void showUserProfileDialog(
topRight: Radius.circular(20.w), topRight: Radius.circular(20.w),
), ),
), ),
height: 230.w,
height: 210.w,
margin: EdgeInsets.only(top: 40.w), margin: EdgeInsets.only(top: 40.w),
padding: EdgeInsets.symmetric(horizontal: 15.w), padding: EdgeInsets.symmetric(horizontal: 15.w),
child: Column( child: Column(
@ -41,16 +43,190 @@ void showUserProfileDialog(
children: [ children: [
SizedBox(height: 10.w,), SizedBox(height: 10.w,),
Row( Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
GestureDetector(
onTap: () => SmartDialog.dismiss(),
child: Icon(
Icons.close,
size: 24.w,
color: const Color.fromRGBO(153, 153, 153, 1),
),
),
],
),
SizedBox(height: 15.w,),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
message.userName,
style: TextStyle(
fontSize: 18.w,
fontWeight: FontWeight.w600,
color: const Color.fromRGBO(51, 51, 51, 1),
),
)
],
),
Row(
children: [
SizedBox(width: 30.w),
//
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(height: 8.w),
//
Center(
child: Wrap(
spacing: 6.w,
runSpacing: 6.w,
runAlignment: WrapAlignment.center,
children: [
if(userData.genderCode == 0) Container(
width: 33.w,
height: 13.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(13.w)),
color: const Color.fromRGBO(237, 245, 255, 1)
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
Assets.imagesMale,
width: 8.w,
height: 8.w,
),
SizedBox(width: 2.w,),
Text(
"${
calculateAge(
(userData.birthDate != null && userData.birthDate!.isNotEmpty) ?
(userData.birthDate ?? "") : userData.birthYear != null && userData.birthYear!.isNotEmpty ?
"${userData.birthYear}-01-01" : "")
}",
style: TextStyle(
fontSize: 11.w,
color: const Color.fromRGBO(120, 140, 255, 1)
),
)
],
),
),
if(userData.genderCode == 1) Container(
width: 33.w,
height: 13.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(13.w)),
color: const Color.fromRGBO(255, 237, 255, 1)
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
Assets.imagesFemale,
width: 8.w,
height: 8.w,
),
SizedBox(width: 2.w,),
Text(
"${
calculateAge(
(userData.birthDate != null && userData.birthDate!.isNotEmpty) ?
(userData.birthDate ?? "") : userData.birthYear != null && userData.birthYear!.isNotEmpty ?
"${userData.birthYear}-01-01" : "")
}",
style: TextStyle(
fontSize: 11.w,
color: const Color.fromRGBO(255, 66, 236, 1)
),
)
],
),
),
if(userData.height != null && userData.height != 0) Container(
width: 33.w,
height: 13.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(13.w)),
color: const Color.fromRGBO(245, 247, 255, 1)
),
child: Center(
child: Text(
"${userData.height}",
style: TextStyle(
fontSize: 11.w,
),
),
),
),
if(userData.provinceName != null && userData.provinceName != "") Container(
width: 33.w,
height: 13.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(13.w)),
color: const Color.fromRGBO(245, 247, 255, 1)
),
child: Center(
child: Text(
"${userData.provinceName}",
style: TextStyle(
fontSize: 11.w,
),
),
),
),
if(userData.occupation != null && userData.occupation != "") Container(
width: 33.w,
height: 13.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(13.w)),
color: const Color.fromRGBO(245, 247, 255, 1)
),
child: Center(
child: Text(
"${userData.occupation}",
style: TextStyle(
fontSize: 11.w,
),
),
),
),
],
),
),
],
),
),
],
),
SizedBox(height: 10.w,),
if(isHost) Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
SizedBox(width: 110.w,),
if(isHost) Container(
width: 100.w,
height: 30.w,
margin: EdgeInsets.only(right: 10.w),
if(
(userData.genderCode == 0 &&
roomController.rtcChannelDetail.value?.maleInfo?.userId != userData.miUserId) ||
(userData.genderCode == 1 &&
roomController.rtcChannelDetail.value?.femaleInfo?.userId != userData.miUserId)
) Container(
width: 165.w,
height: 35.w,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(9.w)),
borderRadius: BorderRadius.all(Radius.circular(8.w)),
color: const Color.fromRGBO(253, 43, 84, 1), color: const Color.fromRGBO(253, 43, 84, 1),
gradient: const LinearGradient(
colors: [
Color.fromRGBO(117, 98, 249, 1),
Color.fromRGBO(152, 124, 255, 1),
],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
), ),
child: Center( child: Center(
child: Text( child: Text(
@ -70,19 +246,53 @@ void showUserProfileDialog(
roomController.setDialogDismiss(false); roomController.setDialogDismiss(false);
}), }),
if(isHost) Container(
width: 81.w,
height: 30.w,
margin: EdgeInsets.only(right: 10.w),
if(
(userData.genderCode == 0 &&
roomController.rtcChannelDetail.value?.maleInfo?.userId == userData.miUserId) ||
(userData.genderCode == 1 &&
roomController.rtcChannelDetail.value?.femaleInfo?.userId == userData.miUserId)
) Container(
width: 165.w,
height: 35.w,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(9.w)),
color: const Color.fromRGBO(245, 245, 245, 1),
borderRadius: BorderRadius.all(Radius.circular(8.w)),
color: const Color.fromRGBO(253, 43, 84, 1),
gradient: const LinearGradient(
colors: [
Color.fromRGBO(117, 98, 249, 1),
Color.fromRGBO(152, 124, 255, 1),
],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
), ),
child: Center( child: Center(
child: Text( child: Text(
"踢出房间",
"抱下麦",
style: TextStyle( style: TextStyle(
color: const Color.fromRGBO(144, 144, 144, 1)
color: Colors.white
),
),
),
).onTap(() async {
await roomController.endMic(
channelId: roomController.rtcChannelDetail.value!.channelId,
kickingUId: message.uid ?? 0);
SmartDialog.dismiss();
}),
if(userData.isFriend ?? false) Container(
width: 165.w,
height: 35.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(8 .w)),
color: const Color.fromRGBO(51, 51, 51, 1),
),
child: Center(
child: Text(
"提出房间",
style: TextStyle(
color: Colors.white
), ),
), ),
), ),
@ -98,83 +308,26 @@ void showUserProfileDialog(
SmartDialog.dismiss(); SmartDialog.dismiss();
roomController.setDialogDismiss(false); roomController.setDialogDismiss(false);
}), }),
GestureDetector(
onTap: () => SmartDialog.dismiss(),
child: Icon(
Icons.close,
size: 24.w,
color: const Color.fromRGBO(153, 153, 153, 1),
if(!(userData.isFriend ?? false)) Container(
width: 165.w,
height: 35.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(8 .w)),
color: const Color.fromRGBO(245, 154, 35, 1),
), ),
),
],
),
SizedBox(height: 10.w,),
//
Row(
children: [
SizedBox(width: 30.w),
//
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
message.userName,
style: TextStyle(
fontSize: 18.w,
fontWeight: FontWeight.w600,
color: const Color.fromRGBO(51, 51, 51, 1),
),
),
SizedBox(height: 8.w),
//
Wrap(
spacing: 6.w,
runSpacing: 6.w,
children: [
_buildTag(
'在线',
const Color.fromRGBO(198, 246, 213, 1),
),
],
child: Center(
child: Text(
"加好友",
style: TextStyle(
color: Colors.white
), ),
],
),
),
],
),
SizedBox(height: 25.w),
//
GestureDetector(
onTap: () {
SmartDialog.dismiss();
onShowGiftPopup();
},
child: Container(
width: double.infinity,
height: 44.w,
decoration: BoxDecoration(
gradient: const LinearGradient(
colors: [
Color.fromRGBO(117, 98, 249, 1),
Color.fromRGBO(152, 124, 255, 1),
],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
borderRadius: BorderRadius.circular(22.w),
),
child: Center(
child: Text(
'送礼物',
style: TextStyle(
fontSize: 16.w,
color: Colors.white,
fontWeight: FontWeight.w500,
), ),
), ),
),
),
).onTap(() async {
SmartDialog.dismiss();
onShowGiftPopup();
}),
],
), ),
SizedBox(height: 15.w), SizedBox(height: 15.w),
// //
@ -189,11 +342,29 @@ void showUserProfileDialog(
}), }),
Container( Container(
width: 1.w, width: 1.w,
height: 12.w,
color: const Color.fromRGBO(229, 229, 229, 1),
height: 15.w,
color: const Color.fromRGBO(212, 212, 212, 1),
margin: EdgeInsets.symmetric(horizontal: 15.w),
),
if(!(userData.isFriend ?? false)) _buildActionLink('踢出房间', () async {
//
await roomController.kickingRtcChannelUser(
channelId: roomController.rtcChannelDetail.value!.channelId,
kickingUId: message.uid ?? 0);
//
FocusScope.of(context).unfocus();
// overlay
SmartDialog.dismiss();
roomController.setDialogDismiss(false);
}),
if(!(userData.isFriend ?? false)) Container(
width: 1.w,
height: 15.w,
color: const Color.fromRGBO(212, 212, 212, 1),
margin: EdgeInsets.symmetric(horizontal: 15.w), margin: EdgeInsets.symmetric(horizontal: 15.w),
), ),
_buildActionLink('送礼物加好友', () {
_buildActionLink('送礼物', () {
SmartDialog.dismiss(); SmartDialog.dismiss();
onShowGiftPopup(); onShowGiftPopup();
}), }),
@ -203,7 +374,7 @@ void showUserProfileDialog(
), ),
), ),
Container( Container(
margin: EdgeInsets.only(left: 30.w),
margin: EdgeInsets.only(left: 147.5.w),
child: ClipOval( child: ClipOval(
child: message.avatar != null && message.avatar!.isNotEmpty child: message.avatar != null && message.avatar!.isNotEmpty
? Image.network( ? Image.network(
@ -255,10 +426,26 @@ Widget _buildActionLink(String text, VoidCallback onTap) {
child: Text( child: Text(
text, text,
style: TextStyle( style: TextStyle(
fontSize: 12.w,
color: const Color.fromRGBO(153, 153, 153, 1),
fontSize: 14.w,
fontWeight: FontWeight.w500,
color: const Color.fromRGBO(117, 98, 249, 1),
), ),
), ),
); );
} }
int calculateAge(String birthdayStr) {
final birthday = DateTime.parse(birthdayStr); // 1996-1-20
final today = DateTime.now();
int age = today.year - birthday.year;
// 1
if (today.month < birthday.month ||
(today.month == birthday.month && today.day < birthday.day)) {
age--;
}
return age;
}

2
lib/widget/live/month_task_dialog.dart

@ -143,7 +143,7 @@ class _TaskItemState extends State<TaskItem> {
), ),
), ),
Text( Text(
"${widget.item.completeCount ?? ""}/${widget.item.requiredCount ?? ""}${widget.item.sort == 1 ? "分钟" : widget.item.sort == 2 ? "" : ""}",
"${widget.item.completeCount ?? ""}/${widget.item.requiredCount ?? ""}${widget.item.subTaskType == 4 ? "玫瑰" : widget.item.subTaskType == 1 ? "分钟" : widget.item.subTaskType == 2 ? "" : ""}",
style: TextStyle( style: TextStyle(
fontSize: 12.w, fontSize: 12.w,
color: const Color.fromRGBO(144, 144, 144, 1) color: const Color.fromRGBO(144, 144, 144, 1)

Loading…
Cancel
Save