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篇-群聊-邀请好友相关推荐

  1. Flutter高仿微信-第47篇-群聊-语音

     Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情 ...

  2. Flutter高仿微信-第46篇-群聊-表情

    Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情请 ...

  3. Flutter高仿微信-第48篇-群聊-图片

     Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情 ...

  4. Flutter高仿微信-第51篇-群聊-修改群名

     Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 实现 ...

  5. Flutter高仿微信-第52篇-群聊-清空聊天记录

     Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 实现 ...

  6. Flutter高仿微信-第55篇-群聊-合成群头像

     Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 /*** 处理 ...

  7. Flutter高仿微信-第36篇-单聊-语音通话

    Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 目前市 ...

  8. Flutter高仿微信-第31篇-单聊-表情

    Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情请 ...

  9. Flutter高仿微信-第32篇-单聊-语音

    Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情请 ...

最新文章

  1. RDKit:化合物骨架分析(基于Python3)
  2. python画图-Python基础-画图:matplotlib
  3. 0.11内核rd_load@ramdisk.c中memcpy函数好像有bug
  4. Android SQLiteDatabase的使用
  5. android 7.0 mi5s,官方回应 小米5s升级安卓7.0还要再等等
  6. 随机模块random、os模块、sys模块、shutil模块
  7. 计算机程序设计vb课后题,《VB程序设计》课后题答案
  8. 关于HTML5中meta name=“viewport“ 的用法---web前端工作笔记014
  9. (8)VTK 鼠标左右键控制模型旋转
  10. python后端和爬虫_【后端开发】python爬虫难学吗
  11. Windows 8 开启 NetFX3
  12. MATLAB初探:美国人口与年份数据拟合
  13. Camtasia Studio 8
  14. 盘点3大智能家居系统|苹果HomeKit、亚马逊Alexa、谷歌Home?
  15. 使iis支持php的方法简介
  16. 惠普计算机怎样添加程序,小编教你惠普电脑如何进入bios设置
  17. 微积分学 \ 线性代数 \ 概率论与数理统计
  18. 小程序获取code 获取 openId
  19. 小论文投稿经历与经验
  20. 每日跑批任务耗时性能从六分钟优化到半分钟历程及总结

热门文章

  1. PAT 1070 结绳 python
  2. 验证HTTPS站点是否在JDK信任列表
  3. echart案例双刻度的坐标轴
  4. BT被封,照样看美剧!
  5. 【推荐系统多任务学习MTL】ESMM 论文精读笔记(含代码实现)
  6. linux使用无线键鼠套装推荐,无线键盘买哪个品牌比较好?
  7. SEO工具百度泛目录ping批量提交【带拨号】
  8. 科学计算机出现感叹号是什么意思,感叹号
  9. 美团获取cookie(使用PC浏览器)
  10. ZZULIOJ-1074,百钱买百鸡(Java)