import 'dart:ui' as ui; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:yumi/services/audio/rtc_manager.dart'; import 'package:provider/provider.dart'; import 'package:yumi/app_localizations.dart'; import 'package:yumi/app/constants/sc_screen.dart'; import 'package:yumi/shared/business_logic/models/res/login_res.dart'; import '../../../ui_kit/components/sc_compontent.dart'; import '../../../ui_kit/components/sc_page_list.dart'; import '../../../ui_kit/components/sc_tts.dart'; import '../../../ui_kit/components/text/sc_text.dart'; ///房间用户在线列表 class RoomOnlinePage extends SCPageList { String? roomId = ""; RoomOnlinePage({super.key, this.roomId}); @override _RoomOnlinePageState createState() => _RoomOnlinePageState(roomId); } class _RoomOnlinePageState extends SCPageListState { String? roomId = ""; _RoomOnlinePageState(this.roomId); @override void initState() { super.initState(); enablePullUp = false; backgroundColor = Colors.transparent; loadData(1); } @override Widget build(BuildContext context) { return SafeArea( top: false, child: Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.only( topLeft: Radius.circular(12.w), topRight: Radius.circular(12.w), ), ), child: Column( children: [ SizedBox(height: 15.w), text( "User(${items.length})", fontSize: 14.sp, fontWeight: FontWeight.w600, textColor: Colors.black, ), SizedBox(height: 10.w), SizedBox(height: 350.w, child: buildList(context)), ], ), ), ); } @override Widget buildItem(SocialChatUserProfile userInfo) { 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: [ GestureDetector( child: head( url: userInfo.userAvatar ?? "", width: 55.w, headdress: userInfo.getHeaddress()?.sourceUrl, ), onTap: () { Navigator.of(context).pop(); num index = Provider.of( context, listen: false, ).userOnMaiInIndex(userInfo.id ?? ""); Provider.of( context, listen: false, ).clickSite(index, clickUser: userInfo); }, ), SizedBox(width: 3.w), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ msgRoleTag(userInfo.roles ?? "", width: 20.w, height: 20.w), SizedBox(width: 3.w), socialchatNickNameText( textColor: Colors.black, maxWidth: 200.w, userInfo.userNickname ?? "", fontSize: 14.sp, type: userInfo.getVIP()?.name ?? "", needScroll: (userInfo.userNickname?.characters.length ?? 0) > 16, ), getVIPBadge( userInfo.getVIP()?.name, width: 45.w, height: 25.w, ), // ListView.separated( // scrollDirection: Axis.horizontal, // shrinkWrap: true, // itemCount: userInfo.wearBadge?.length ?? 0, // itemBuilder: (context, index) { // return netImage( // width: 25.w, // height: 25.w, // url: userInfo.wearBadge?[index].selectUrl ?? "", // ); // }, // separatorBuilder: (BuildContext context, int index) { // return SizedBox(width: 5.w); // }, // ), ], ), SizedBox(height: 3.w), GestureDetector( child: Container( padding: EdgeInsets.symmetric(vertical: 3.w), child: Row( textDirection: TextDirection.ltr, children: [ text( "ID:${userInfo.getID()}", fontSize: 12.sp, textColor: Colors.black, 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, ), ], ), ), onTap: () { Clipboard.setData( ClipboardData(text: userInfo.getID() ?? ""), ); SCTts.show(SCAppLocalizations.of(context)!.copiedToClipboard); }, ), ], ), ], ), ), onTap: () {}, ); } @override empty() { List list = []; list.add(SizedBox(height: height(30))); list.add(Image.asset('sc_images/general/sc_icon_loading.png')); list.add(SizedBox(height: height(15))); list.add( Text( "No data", style: TextStyle( fontSize: sp(14), color: Color(0xff999999), fontWeight: FontWeight.w400, decoration: TextDecoration.none, height: 1, ), ), ); return Column( mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.center, children: list, ); } @override builderDivider() { // return Divider( // height: 1.w, // color: Color(0xff3D3277).withOpacity(0.5), // indent: 15.w, // ); return Container(height: 8.w); } ///加载数据 @override loadPage({ required int page, required Function(List) onSuccess, Function? onErr, }) async { // var roomList = await SCChatRoomRepository().roomOnlineUsers(roomId ?? ""); await Provider.of(context!, listen: false).fetchOnlineUsersList(); List userList = Provider.of(context!, listen: false).onlineUsers; onSuccess(userList); } }