chatapp3-flutter/lib/modules/room/rank/room_gift_rank_tab_page.dart
2026-04-09 21:32:23 +08:00

216 lines
6.9 KiB
Dart

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:yumi/shared/data_sources/sources/repositories/sc_room_repository_imp.dart';
import 'package:yumi/main.dart';
import 'package:yumi/app_localizations.dart';
import 'package:yumi/ui_kit/components/sc_compontent.dart';
import 'package:yumi/ui_kit/components/sc_page_list.dart';
import 'package:yumi/ui_kit/components/text/sc_text.dart';
import 'package:yumi/ui_kit/components/sc_tts.dart';
import 'package:yumi/shared/tools/sc_lk_dialog_util.dart';
import 'package:yumi/shared/business_logic/models/res/room_gift_rank_res.dart';
import 'package:yumi/ui_kit/widgets/room/room_user_info_card.dart';
class RoomGiftRankTabPage extends SCPageList {
String roomId;
String dataType;
RoomGiftRankTabPage(this.roomId, this.dataType);
@override
_RoomGiftRankTabPageState createState() =>
_RoomGiftRankTabPageState(roomId, dataType);
}
class _RoomGiftRankTabPageState
extends SCPageListState<RoomGiftRankRes, RoomGiftRankTabPage> {
String roomId;
String dataType;
_RoomGiftRankTabPageState(this.roomId, this.dataType);
@override
void initState() {
super.initState();
enablePullUp = false;
backgroundColor = Colors.transparent;
loadData(1);
}
@override
Widget build(BuildContext context) {
return buildList(context);
}
@override
Widget buildItemOne(RoomGiftRankRes userInfo, int index) {
return GestureDetector(
child: Container(
margin: EdgeInsets.symmetric(vertical: 3.w),
padding: EdgeInsets.symmetric(horizontal: 16.w),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12.w),
color: Colors.transparent,
),
child: Row(
children: [
index == 0
? Image.asset(
"sc_images/room/sc_icon_room_contribute_rank1.png",
width: 22.w,
height: 22.w,
)
: (index == 1
? Image.asset(
"sc_images/room/sc_icon_room_contribute_rank2.png",
width: 22.w,
height: 22.w,
)
: (index == 2
? Image.asset(
"sc_images/room/sc_icon_room_contribute_rank3.png",
width: 22.w,
height: 22.w,
)
: Container(
width: 22.w,
alignment: AlignmentDirectional.center,
child: text(
"${index + 1}",
fontWeight: FontWeight.w600,
textColor: Colors.white,
fontSize: 14.sp,
),
))),
SizedBox(width: 10.w),
GestureDetector(
child: head(
url: userInfo.userProfile?.userAvatar ?? "",
width: 55.w,
// headdress: userInfo.userProfile?.getHeaddress()?.sourceUrl,
),
onTap: () {
showBottomInCenterDialog(
navigatorKey.currentState!.context,
RoomUserInfoCard(userId: userInfo.userProfile?.id),
);
SmartDialog.dismiss(tag: "showRoomGiftRankPage");
},
),
SizedBox(width: 3.w),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
socialchatNickNameText(
maxWidth: 170.w,
userInfo.userProfile?.userNickname ?? "",
fontSize: 14.sp,
type: userInfo.userProfile?.getVIP()?.name ?? "",
needScroll:
(userInfo.userProfile?.userNickname?.characters.length ?? 0) >
14,
),
],
),
SizedBox(height: 3.w),
GestureDetector(
child: Container(
child: Row(
textDirection: TextDirection.ltr,
children: [
text(
"ID:${userInfo.userProfile?.getID()}",
fontSize: 12.sp,
textColor: Colors.white,
fontWeight: FontWeight.bold,
),
SizedBox(width: 5.w),
Image.asset(
"sc_images/room/sc_icon_user_card_copy_id.png",
width: 12.w,
height: 12.w,
),
SizedBox(width: 8.w),
],
),
),
onTap: () {
Clipboard.setData(
ClipboardData(text: userInfo.userProfile?.getID() ?? ""),
);
SCTts.show(SCAppLocalizations.of(context)!.copiedToClipboard);
},
),
],
),
Spacer(),
Image.asset(
"sc_images/general/sc_icon_jb.png",
width: 20.w,
height: 20.w,
),
SizedBox(width: 3.w),
text(
"${userInfo.totalFormat ?? 0}",
fontSize: 12.sp,
textColor: Color(0xFFFFB627),
),
SizedBox(width: 5.w),
],
),
),
onTap: () {},
);
}
@override
empty() {
return mainEmpty(
image: Image.asset(
'sc_images/general/sc_icon_loading.png',
width: 121.w,
fit: BoxFit.fitWidth,
),
msg: SCAppLocalizations.of(context)!.noData,
textColor: Colors.white54,
);
}
@override
builderDivider() {
// return Divider(
// height: 1.w,
// color: Color(0xff3D3277).withOpacity(0.5),
// indent: 15.w,
// );
return Container(height: 4.w);
}
///加载数据
@override
loadPage({
required int page,
required Function(List<RoomGiftRankRes>) onSuccess,
Function? onErr,
}) async {
try {
var list = await SCChatRoomRepository().roomContributionRank(
roomId,
dataType,
size: 20,
);
onSuccess(list);
} catch (e) {
if (onErr != null) {
onErr();
}
}
}
}