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

news2025/2/25 15:40:30

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

 详情请查看

效果图:

实现代码:

//修改群名
void _updateGroupName(){
  bool isOwner = false;
  for(int i = 0; i< _groupUserList.length; i++){
    GroupUserBean groupUserBean = _groupUserList[i];
    if(account == groupUserBean.account &&
        (groupUserBean.accountType == GroupUserBean.ACCOUNT_TYPE_OWNER||
            groupUserBean.accountType == GroupUserBean.ACCOUNT_TYPE_ADMIN)){
      isOwner = true;
      break;
    }
  }
  if(isOwner){
    Navigator.push(context, MaterialPageRoute(builder: (context) => GroupUpdateName(groupId: widget.groupId)));
  } else {
    LoadingDialogUtils.showTipDialog(context, msg : "当前群聊仅群主/群管理员可以修改群聊名称");
  }

}

/**
 * Author : wangning
 * Email : maoning20080809@163.com
 * Date : 2022/11/15 14:13
 * Description : 修改群名
 */

class GroupUpdateName extends StatefulWidget {

  String groupId;

  GroupUpdateName({required this.groupId});

  @override
  _GroupUpdateNameState createState() => _GroupUpdateNameState();

}

class _GroupUpdateNameState extends State<GroupUpdateName> {

  TextEditingController? _groupNameController;

  //修改群名
  void _processUpdateName(String groupName) async {
    bool isNetwork = await CommonNetwork.isNetwork();
    if(!isNetwork) {
      CommonUtils.showNetworkError(context);
      return;
    }

    if(_groupBean!= null){
      _groupBean?.groupName = groupName;
      bool isSuccess = await GroupRepository.getInstance().updateGroupServer(_groupBean!);
      if(isSuccess){
        CommonToast.show(context, "修改成功!");
        GroupRepository.getInstance().updateGroup(_groupBean!);
        eventBus.emit(BaseEvent(BaseEvent.TYPE_REFRESH_GROUP, result: HashMap<String, Object>()));
        Navigator.pop(context);
      } else {
        CommonToast.show(context, "修改失败!");
      }
    }

  }


  GroupBean? _groupBean;

  //初始化群名
  void _initGroup() async{
    _groupBean = await GroupRepository.getInstance().findGroupByGroupId(widget.groupId);
    _groupNameController = TextEditingController(text: "${_groupBean?.groupName}");
    setState(() {
    });

  }

  @override
  void initState() {
    super.initState();
    _initGroup();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: WnAppBar.getAppBar(context, Text("修改群名")),
      body: Container(
        height: 200,
        child: Column(
          children: [
            SizedBox(height: 30,),
            Expanded(
                child: Container(
                  margin: EdgeInsets.only(left: 12, right: 12),
                  width: double.infinity,
                  child: Row(
                    children: [
                      Text("群名:"),
                      Expanded(
                        child:customTextField(defaultValue: '${_groupBean?.groupName}',textEditController: _groupNameController,),
                      ),
                    ],
                  ),
                )
            ),
            SizedBox(height: 30,),
            Container(
              alignment: AlignmentDirectional.center,
              child: _updateNameWidget(),
            ),

          ],
        ),
      ),
    );
  }

  Widget customTextField({
    TextEditingController? textEditController,
    String? hintText,
    String? defaultValue,
  }) {
    return TextField(
      controller: textEditController,
      cursorColor: Colors.black,
      decoration: InputDecoration(
        //labelText: defaultValue,
        //hintText: hintText,
        hintStyle: TextStyle(
          fontSize: 16,
          color: Colors.grey.withOpacity(0.8),
        ),
        focusedBorder: OutlineInputBorder(
          borderSide: const BorderSide(color: Colors.black),
          borderRadius: BorderRadius.circular(5.0),
        ),
        enabledBorder: OutlineInputBorder(
          borderRadius: BorderRadius.circular(5.0),
          borderSide: BorderSide(
            color: Colors.grey,
          ),
        ),
      ),
      style: TextStyle(
        fontSize: 16,
        color: Colors.black,
        fontWeight: FontWeight.w500,
      ),
    );
  }

  Widget _updateNameWidget() {
    return MaterialButton(
      color: Colors.blue,
      textColor: Colors.white,
      padding: EdgeInsets.only(left: 28, top: 8, right: 28, bottom: 8),
      child: Text('修改', style: TextStyle(fontSize: 16),),
      onPressed: () {
        var nickName = _groupNameController?.text??"";
        _processUpdateName(nickName);
      },
    );
  }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/39647.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Multi-Interest Network with Dynamic Routing forRecommendation at Tmall 论文阅读笔记

1. ABSTRACT 1.1 Industrial recommender systems &#xff08;1&#xff09;工业推荐系统通常由匹配阶段和排名阶段组成&#xff1b; &#xff08;2&#xff09;匹配阶段&#xff1a;检索与用户兴趣相关的候选项&#xff1b; &#xff08;3&#xff09;排名阶段&#xff1a;…

Spring Cloud OpenFeign - - - > 日志配置

项目源码地址&#xff1a;https://download.csdn.net/download/weixin_42950079/87168704 OpenFeign 有 4 种日志级别&#xff1a; NONE: 不记录任何日志&#xff0c;是OpenFeign默认日志级别&#xff08;性能最佳&#xff0c;适用于生产环境&#xff09;。BASIC: 仅记录请求方…

BT - Unet:生物医学图像分割的自监督学习框架

BT-Unet采用Barlow twin方法对U-Net模型的编码器进行无监督的预训练减少冗余信息&#xff0c;以学习数据表示。之后&#xff0c;对完整网络进行微调以执行实际的分割。 BT-Unet由 Indian Institute of Information Technology Allahabad开发&#xff0c;发布在2022年的JML上 …

相关性质和条件变量-ReentrantLock详解(2)-AQS-并发编程(Java)

文章目录1 可重入2 可打断3 公平锁4 条件变量4.1 await()4.1.1 主方法4.1.2 addConditionWaiter()4.1.3 isOnSyncQueue()4.1.4 checkInterruptWhileWaiting()4.2 signal()4.2.1 主方法4.2.2 doSignal()4.2.3 transferForSignal()5 后记1 可重入 可重入在加锁中体现代码如下&am…

零经验,小白变大厨!

平时煮泡面都会翻车的老王      昨天在朋友圈po了一组美食图      朋友小聚,20分钟搞定一桌菜,嘻嘻。      我点开一看,嚯!      红烧里脊、糖醋排骨、油焖大虾、剁椒鱼头……个顶个的硬菜,而且色泽诱人看起来很好吃的样子,关键是居然20分钟搞定?      难…

2022 高教杯数学建模C题古代玻璃制品的成分分析与鉴别回顾及总结

2022 高教杯数学建模C题古代玻璃制品的成分分析与鉴别回顾及总结 Paper & Code&#xff1a;https://github.com/Fly-Pluche/2022-mathematical-modeling-C 希望可以施舍几个star⭐️ 国赛分工 我们三人都有主要的分工: 队员A主要负责二&#xff0c;三问的求解以及代码的编…

被问到可重入锁条件队列,看这一篇就够了!|原创

本文深入解读了高频面试点——ReentrantLock的条件队列使用方法及其原理。源码有详细注释&#xff0c;建议收藏阅读。点击上方“后端开发技术”&#xff0c;选择“设为星标” &#xff0c;优质资源及时送达Jdk中独占锁的实现除了使用关键字synchronized外,还可以使用ReentrantL…

用HTML+CSS做一个简单的新闻门户 1页网页

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 茶文化网站 | 中华传统文化题材 | 京剧文化水墨风书画 | 中国民间年画文化艺术网站 | 等网站的设计与制作 | HTML期末大学生网页设计作业&#xff0c;…

Web前端大作业—电影网页介绍8页(html+css+javascript) 带登录注册表单

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 精彩专栏推荐&#x1f4…

DevOps初学者的指南——阿里出品学习图册带你掌握高薪技术!

开篇 你是否想开始学习DevOps&#xff0c;或者愿意通过增加DevOps这一技能来转变你的职业生涯&#xff1f; 如果你的答案是肯定的&#xff0c;那么你就来对地方了 从初创企业到跨国企业&#xff0c;技术行业的每个细分领域都在改变其软件开发方法。DevOps工具和实践惊人地减…

【mysql 高级】explain的使用及explain包含字段的含义

explain的使用及explain包含字段的含义1.id2. select_type3.table4.type5.possible_keys6.key7.key_len8.ref9.rows10.Extra使用explain关键字可以模拟优化器执行SQL语句&#xff0c;从而知道MySQL是如何处理你的SQL语句的&#xff0c;从而分析你的查询语句或是表结构的性能瓶颈…

面向OLAP的列式存储DBMS-10-[ClickHouse]的常用数组操作

参考ClickHouse 中的数据查询以及各种子句 ClickHouse 数组的相关操作函数&#xff0c;一网打尽 在关系型数据库里面我们一般都不太喜欢用数组&#xff0c;但是在 ClickHouse 中数组会用的非常多&#xff0c;并且操作起来非常简单。ClickHouse 里面提供了非常多的函数&#x…

文本生成视频Make-A-Video,根据一句话就能一键生成视频 Meta新AI模型

Meta公司&#xff08;原Facebook&#xff09;在今年9月29日首次推出一款人工智能系统模型&#xff1a;Make-A-Video&#xff0c;可以从给定的文字提示生成短视频。 Make-A-Video研究基于文本到图像生成技术的最新进展&#xff0c;该技术旨在实现文本到视频的生成&#xff0c;可…

[附源码]Python计算机毕业设计高校第二课堂管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

第十章 二叉树的各种遍历

第十章&#xff1a;二叉树的前、中、后序遍历前期准备:一、前序遍历1、遍历的思路2、遍历代码3、遍历图示二、中序遍历1、遍历的思路2、遍历代码三、后序遍历1、遍历的思路2、遍历代码三、遍历的应用1、计算二叉树中的节点个数2、二叉树叶子节点的个数3、二叉树的深度4、二叉树…

EMC原理-传导(共模、差模)与辐射(近场、远场)详解

目录&#xff1a; 第一章、EMC概念介绍 第二章、感应干扰(近场) 第三章、辐射干扰(远场) 第四章、差模干扰 第五章、共模干扰 ------------------------------------------------------------------------------------------------------------------------ 第一章、EMC…

ceph块存储在线扩容

记录&#xff1a;339 场景&#xff1a;在CentOS 7.9操作系统上&#xff0c;部署ceph-13.2.10集群。应用ceph块设备(ceph block device)&#xff1b;主要是创建ceph块存储和在线扩容相关操作。 版本&#xff1a; 操作系统&#xff1a;CentOS 7.9 ceph版本&#xff1a;ceph-1…

牛顿法(牛顿拉夫逊)配电网潮流计算matlab程序

牛顿法配电网潮流计算matlab程序 传统牛顿—拉夫逊算法&#xff0c;简称牛顿法&#xff0c;是将潮流计算方程组F(X)0&#xff0c;进行泰勒展开。因泰勒展开有许多高阶项&#xff0c;而高阶项级数部分对计算结果影响很小&#xff0c;当忽略一阶以上部分时&#xff0c;可以简化对…

向NS-3添加新模块_ns3.37添加新模块_ns3.37不同版本模块移植

使用ns3的时候&#xff0c;我们需要调用很多模块&#xff0c;比如对wifi的简单功能进行仿真时&#xff1a; ns-3.35_third.cc_ns-3网络仿真工具wifi脚本解析_wifi脚本网络拓扑_ns-3third脚本全注释_基础ns-3_ns-3入门_ns-3third脚本解析_Part1_Mr_liu_666的博客-CSDN博客Intro…

WinSock的I/O模型

目录 一、 套接字的非阻塞工作模式 1.阻塞与非阻塞模式的概念 2.阻塞模式下能引起阻塞的套接字函数 3.两种模式的比较 2. 套接字非阻塞模式的设置方法——ioctlsocket 函数 3. 非阻塞模式下的编程方法 4. 非阻塞模式服务器端程序和客户端程序 二、select模型 1. 套接字…