Flutter高仿微信-第54篇-群聊-邀请好友
创始人
2024-02-18 19:07:28
0

 Flutter高仿微信系列共59篇,从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。

 详情请查看

效果图:

实现代码:

import 'package:flutter/material.dart';
import 'package:wnchat2/bean/contacts/contacts_bean_comb.dart';
import 'package:wnchat2/bean/groupchat/group_user_bean.dart';
import 'package:wnchat2/common/common_utils.dart';
import 'package:wnchat2/common/sp_utils.dart';
import 'package:wnchat2/common/wn_app_bar.dart';
import 'package:wnchat2/event/base_event.dart';
import 'package:wnchat2/repository/user_repository.dart';
import 'package:wnchat2/routers/routers.dart';
import 'package:wnchat2/utils/image_utils.dart';
import 'package:wnchat2/utils/loading_dialog_utils.dart';
import 'package:wnchat2/utils/wn_date_utils.dart';
import 'package:wnchat2/views/common_avatar_view.dart';import '../common/event_bus_utils.dart';
import '../repository/contacts_repository.dart';
import '../repository/group_user_repository.dart';
import '../utils/common_toast.dart';
import '../utils/log_utils.dart';/*** Author : wangning* Email : maoning20080809@163.com* Date : 2022/11/6 19:46* Description : 添加群成员*/class AddGroupMember extends StatefulWidget{String groupId;AddGroupMember({required this.groupId});@overrideState createState() => _AddGroupMemberState();}class _AddGroupMemberState extends State{ScrollController _scrollController = ScrollController(); //listview 的控制器List _contactList = [];bool isLoading = false;String account = SpUtils.getString(CommonUtils.LOGIN_ACCOUNT);@overridevoid initState() {super.initState();_getData();}_getData() async {List contactList = await ContactsRepository.getInstance().findAllContactsCombGroup(widget.groupId);setState(() {_contactList = contactList;});}//完成操作void _complete() async {//已选择的账户List selectAccounts = [];//选择多个好友for(int i = 0; i < _contactList.length;i++){ContactsBeanComb contactsBeanComb = _contactList[i];if(contactsBeanComb.isCheck){String selectAccount = "";if(account == contactsBeanComb.toAccount){selectAccount = contactsBeanComb.fromAccount??"";} else {selectAccount = contactsBeanComb.toAccount??"";}selectAccounts.add(selectAccount);}}if(selectAccounts.isEmpty){CommonToast.show(context, "请选择一个好友!");return;}LoadingDialogUtils.showLoadingDialog(context, msg: "请稍后...");String addTime = WnDateUtils.getCurrentTime();List groupUserList = [];for(int i = 0; i < selectAccounts.length; i++){String selectAccount = selectAccounts[i];if(selectAccount != account){//只添加群员GroupUserBean groupUserBean = GroupUserBean(groupId: widget.groupId, account: selectAccount, accountType: GroupUserBean.ACCOUNT_TYPE_MEMBER, addTime: addTime);LogUtils.d("添加成员:${groupUserBean.toJson()}");//插入群员到本地数据库await GroupUserRepository.getInstance().insertGroupUser(groupUserBean);groupUserList.add(groupUserBean);}}List? avatarList =  await UserRepository.getInstance().findAvatarListByGroupId(widget.groupId);await GroupUserRepository.getInstance().insertGroupUserServer(groupUserList);//刷新群聊数据eventBus.emit(BaseEvent(BaseEvent.TYPE_REFRESH_GROUP, result: HashMap()));if(avatarList != null && avatarList.isNotEmpty) {await ImageUtils.processMergeAvatarImage(widget.groupId, avatarList);}LoadingDialogUtils.dimissLoadingDialog(context);CommonToast.show(context, "邀请好友成功!");Navigator.popUntil(context, ModalRoute.withName(Routes.group_chat_main));}@overrideWidget build(BuildContext context) {return Scaffold(appBar: WnAppBar.getAppBar(context, Text("添加成员")),body: Column(children: [SizedBox(height: 10,),Container(child: Text("请选择好友", style: TextStyle(fontSize: 22, color: Colors.black54, fontWeight: FontWeight.bold),),),Expanded(child:ListView.builder(itemCount: _contactList.length,controller: _scrollController,itemBuilder: (context, index) {return InkWell(onLongPress: (){LogUtils.d("长按。${index}");},onTap: (){//_goDetails(_contactList[index]);},child: Container(decoration: BoxDecoration(border: Border(bottom:BorderSide(color: Color(0xffd9d9d9), width: 0.3))),padding: EdgeInsets.only(left: 14, top: 10, bottom: 10),child: Row(children: [CommonAvatarView.showBaseImage(_contactList[index].avatar, 44, 44),SizedBox(width: 12,),Text(_contactList[index].nickName, maxLines: 1,style: TextStyle(fontSize: 18, color: Colors.black, fontWeight: FontWeight.bold),),Expanded(child: Text("")),Checkbox(value: _contactList[index].isCheck, onChanged: (isCheck){//LogUtils.d("点击:${isCheck}");_contactList[index].isCheck = isCheck!;setState(() {});}),],),),);})),Container(alignment: Alignment.centerRight,margin: EdgeInsets.only(right: 12, bottom: 6),child: ElevatedButton(style: ElevatedButton.styleFrom(backgroundColor: Colors.green,textStyle: TextStyle(fontSize: 20)),onPressed: (){_complete();},child: Text("完成")),),],),);}}

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...