Flutter高仿微信-第54篇-群聊-邀请好友
Flutter高仿微信系列共59篇,从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。
详情请查看
Flutter高仿微信视频教程和源代码下载
效果图:
实现代码:
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<StatefulWidget> createState() => _AddGroupMemberState();}class _AddGroupMemberState extends State<AddGroupMember>{ScrollController _scrollController = ScrollController(); //listview 的控制器List<ContactsBeanComb> _contactList = [];bool isLoading = false;String account = SpUtils.getString(CommonUtils.LOGIN_ACCOUNT);@overridevoid initState() {super.initState();_getData();}_getData() async {List<ContactsBeanComb> contactList = await ContactsRepository.getInstance().findAllContactsCombGroup(widget.groupId);setState(() {_contactList = contactList;});}//完成操作void _complete() async {//已选择的账户List<String> 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<GroupUserBean> 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<String>? avatarList = await UserRepository.getInstance().findAvatarListByGroupId(widget.groupId);await GroupUserRepository.getInstance().insertGroupUserServer(groupUserList);//刷新群聊数据eventBus.emit(BaseEvent(BaseEvent.TYPE_REFRESH_GROUP, result: HashMap<String, Object>()));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("完成")),),],),);}}
Flutter高仿微信-第54篇-群聊-邀请好友相关推荐
- Flutter高仿微信-第47篇-群聊-语音
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情 ...
- Flutter高仿微信-第46篇-群聊-表情
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情请 ...
- Flutter高仿微信-第48篇-群聊-图片
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情 ...
- Flutter高仿微信-第51篇-群聊-修改群名
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 实现 ...
- Flutter高仿微信-第52篇-群聊-清空聊天记录
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 实现 ...
- Flutter高仿微信-第55篇-群聊-合成群头像
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 /*** 处理 ...
- Flutter高仿微信-第36篇-单聊-语音通话
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 目前市 ...
- Flutter高仿微信-第31篇-单聊-表情
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情请 ...
- Flutter高仿微信-第32篇-单聊-语音
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情请 ...
最新文章
- RDKit:化合物骨架分析(基于Python3)
- python画图-Python基础-画图:matplotlib
- 0.11内核rd_load@ramdisk.c中memcpy函数好像有bug
- Android SQLiteDatabase的使用
- android 7.0 mi5s,官方回应 小米5s升级安卓7.0还要再等等
- 随机模块random、os模块、sys模块、shutil模块
- 计算机程序设计vb课后题,《VB程序设计》课后题答案
- 关于HTML5中meta name=“viewport“ 的用法---web前端工作笔记014
- (8)VTK 鼠标左右键控制模型旋转
- python后端和爬虫_【后端开发】python爬虫难学吗
- Windows 8 开启 NetFX3
- MATLAB初探:美国人口与年份数据拟合
- Camtasia Studio 8
- 盘点3大智能家居系统|苹果HomeKit、亚马逊Alexa、谷歌Home?
- 使iis支持php的方法简介
- 惠普计算机怎样添加程序,小编教你惠普电脑如何进入bios设置
- 微积分学 \ 线性代数 \ 概率论与数理统计
- 小程序获取code 获取 openId
- 小论文投稿经历与经验
- 每日跑批任务耗时性能从六分钟优化到半分钟历程及总结