163 lines
5.0 KiB
Dart
163 lines
5.0 KiB
Dart
import 'dart:ui' as ui;
|
|
|
|
import 'package:cached_network_image/cached_network_image.dart';
|
|
import 'package:flutter/cupertino.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
import 'package:yumi/app_localizations.dart';
|
|
import 'package:yumi/shared/data_sources/sources/repositories/sc_room_repository_imp.dart';
|
|
import 'package:yumi/ui_kit/components/sc_page_list.dart';
|
|
import 'package:yumi/ui_kit/components/text/sc_text.dart';
|
|
import 'package:yumi/app/routes/sc_fluro_navigator.dart';
|
|
import 'package:yumi/shared/data_sources/sources/local/user_manager.dart';
|
|
import 'package:yumi/shared/data_sources/sources/repositories/sc_user_repository_impl.dart';
|
|
import 'package:yumi/shared/business_logic/models/res/room_black_list_res.dart';
|
|
import 'package:yumi/modules/index/main_route.dart';
|
|
|
|
///房间用户 黑名单
|
|
class BlockedListPage extends SCPageList {
|
|
String? roomId;
|
|
|
|
BlockedListPage({super.key, this.roomId});
|
|
|
|
@override
|
|
_BlockedListPageState createState() => _BlockedListPageState(roomId);
|
|
}
|
|
|
|
class _BlockedListPageState
|
|
extends SCPageListState<RoomBlackListRes, BlockedListPage> {
|
|
String? roomId;
|
|
|
|
_BlockedListPageState(this.roomId);
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
enablePullUp = false;
|
|
backgroundColor = Colors.transparent;
|
|
isShowDivider = false;
|
|
loadData(1);
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return SafeArea(
|
|
child: ClipRRect(
|
|
borderRadius: BorderRadius.only(
|
|
topLeft: Radius.circular(12.0),
|
|
topRight: Radius.circular(12.0),
|
|
),
|
|
child: BackdropFilter(
|
|
filter: ui.ImageFilter.blur(sigmaX: 15, sigmaY: 15),
|
|
child: Container(
|
|
width: ScreenUtil().screenWidth,
|
|
color: Color(0xff09372E).withOpacity(0.5),
|
|
child: Column(
|
|
children: [
|
|
SizedBox(height: 15.w),
|
|
text(
|
|
SCAppLocalizations.of(context)!.blockedList,
|
|
fontSize: 14.sp,
|
|
textColor: Colors.white,
|
|
),
|
|
SizedBox(height: 10.w),
|
|
SizedBox(height: 350.w, child: buildList(context)),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
@override
|
|
Widget buildItem(RoomBlackListRes res) {
|
|
return Container(
|
|
margin: REdgeInsets.symmetric(vertical: 5.w, horizontal: 10.w),
|
|
padding: REdgeInsets.symmetric(vertical: 10.w),
|
|
decoration: BoxDecoration(
|
|
color: Color(0xffF2F2F2),
|
|
borderRadius: BorderRadius.circular(10.w),
|
|
),
|
|
child: Row(
|
|
children: [
|
|
SizedBox(width: 10.w),
|
|
GestureDetector(
|
|
child: ClipOval(
|
|
child: CachedNetworkImage(
|
|
imageUrl: res.blacklistUserProfile?.userAvatar ?? "",
|
|
width: 42.w,
|
|
height: 42.w,
|
|
),
|
|
),
|
|
onTap: () {
|
|
SCNavigatorUtils.push(
|
|
context,
|
|
"${SCMainRoute.person}?isMe=${AccountStorage().getCurrentUser()?.userProfile?.id == res.blacklistUserProfile?.id}&tageId=${res.blacklistUserProfile?.id}",
|
|
);
|
|
},
|
|
),
|
|
SizedBox(width: 3.w),
|
|
Expanded(
|
|
child: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
Container(
|
|
constraints: BoxConstraints(maxWidth: 190.w),
|
|
child: text(
|
|
res.blacklistUserProfile?.userNickname ?? "",
|
|
fontSize: 14.sp,
|
|
textColor: Colors.white,
|
|
),
|
|
),
|
|
SizedBox(height: 4.w),
|
|
text(
|
|
"ID:${res.blacklistUserProfile?.getID()}",
|
|
fontSize: 10.sp,
|
|
textColor: Colors.white,
|
|
),
|
|
],
|
|
),
|
|
),
|
|
SizedBox(width: 3.w),
|
|
GestureDetector(
|
|
child: Image.asset(
|
|
"sc_images/room/sc_icon_remve_block.png",
|
|
width: 22.w,
|
|
height: 22.w,
|
|
),
|
|
onTap: () {
|
|
SCChatRoomRepository()
|
|
.removeBlacklist(
|
|
res.roomId ?? "",
|
|
res.blacklistUserProfile?.id ?? "",
|
|
)
|
|
.whenComplete(() {
|
|
loadData(1);
|
|
});
|
|
},
|
|
),
|
|
SizedBox(width: 15.w),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
|
|
///加载数据
|
|
@override
|
|
loadPage({
|
|
required int page,
|
|
required Function(List<RoomBlackListRes>) onSuccess,
|
|
Function? onErr,
|
|
}) async {
|
|
try {
|
|
var roomList = await SCAccountRepository().roomBlacklist(roomId ?? "", "0");
|
|
onSuccess(roomList);
|
|
} catch (e) {
|
|
if (onErr != null) {
|
|
onErr();
|
|
}
|
|
}
|
|
}
|
|
}
|