组件化,封装为公共组件

收起和更多按钮的样式可以根据自己的需求来修改,提供了很多可先参数来控制。


class TextSpanShow extends StatefulWidget {final String text;final Color colorTest;final Color ellipsisColorTest;final Color moreBackgroundTest;final Color moreContainerColor;final int mMaxLine;final bool showColor;final TextStyle styleText;final double textSpanWidth;final double textSpanHeight;const TextSpanShow(this.text, {Key key,this.colorTest = Colors.black,this.ellipsisColorTest,this.mMaxLine = 3, this.styleText, this.moreBackgroundTest, this.showColor, this.textSpanWidth, this.textSpanHeight, this.moreContainerColor,}) : super(key: key);@override_TextSpanShowState createState() => _TextSpanShowState();
}class _TextSpanShowState extends State<TextSpanShow> {bool mIsExpansion = false;@overrideWidget build(BuildContext context) {return Container(width: widget.textSpanWidth ?? null,height: widget.textSpanHeight ?? null,color: widget.moreContainerColor ?? null,child: richText(widget.text,),);}Widget richText(String _text) {if (IsExpansion(_text)) {//如果需要截断if (mIsExpansion) {return Stack(children: <Widget>[new Text(_text,textAlign: TextAlign.left,style:widget.styleText?? TextStyle(color: widget.colorTest),),Positioned(right: 0,bottom: 0,child: Container(decoration: BoxDecoration(color: Colors.red),child: GestureDetector(onTap: () {_isShowText();},child: Text("收起<",style: TextStyleFactory.styleSubtitle3(context, 12, Colors.blue)),),),),],);} else {return Stack(children: <Widget>[Padding(padding: EdgeInsets.all(0),child: Text(_text,maxLines: widget.mMaxLine,textAlign: TextAlign.left,overflow: TextOverflow.ellipsis,style:widget.styleText?? TextStyle(color: widget.ellipsisColorTest??widget.colorTest),),),Positioned(right: 0,bottom: 0,child: Container(color: widget.moreContainerColor??Color.fromARGB(255, 250, 250, 250),child: Row(children: [Container(child: Text("...  ",style:widget.styleText?? TextStyle(color: widget.moreBackgroundTest),),),GestureDetector(child: Text("更多>",style: TextStyleFactory.styleSubtitle3(context, 12, Colors.blue)),onTap: () {_isShowText();},),],)),),],);}} else {return Text(_text,maxLines: widget.mMaxLine,textAlign: TextAlign.left,overflow: TextOverflow.ellipsis,style:widget.styleText?? TextStyle(color: Colors.black),);}}bool IsExpansion(String text) {TextPainter _textPainter = TextPainter(maxLines: widget.mMaxLine,text: TextSpan(text: text, style: TextStyle(fontSize: 16.0, color: Colors.black)),textDirection: TextDirection.ltr)..layout(maxWidth: Screen.width, minWidth: Screen.width);if (_textPainter.didExceedMaxLines) {//这里判断 文本是否截断return true;} else {return false;}}void _isShowText() {if (mIsExpansion) {//关闭了setState(() {mIsExpansion = false;});} else {setState(() {mIsExpansion = true;});}}
}

flutter Text文本更多和收起功能相关推荐

  1. vue 显示更多,收起功能

    vue 显示更多,收起功能 标签显示更多收起功能 标签显示更多收起功能 第一种: 效果图: 合起来时: 展开时: 上代码: <div class="demo-input-suffix& ...

  2. flutter Text文本,中英文混合,或则英文单词自动换行处理

    之前在安卓原生遇到过,当中英文混合,或者中文与数字或者特殊符号,或则英文单词时,文本会被自动换行,这样会导致,换行时上一行可能会留很大的空白区域,今天群里也有人问题过此种情况. 下面给出我在项目中的解 ...

  3. 微信小程序文本查看更多和收起

    微信小程序文本查看更多和收起 微信小程序中,有时候文本需要实现这样的功能: 1.文本超过n行显示省略号 2.省略时,显示 展开/收起 按钮 3.文本不超过n行时,不显示省略号和展开/收起按钮 实现功能 ...

  4. 【译】Flutter 2.2中的新功能

    原文:What's new in Flutter 2.2 作者:Chris Sells 发布时间:2021.05.20 Flutter 2.2版本的重点是打磨和优化,包括iOS的性能改进.Androi ...

  5. Web控件文本框Reset的功能

    在前一篇中<怎样实现Web控件文本框Reset的功能>http://www.cnblogs.com/insus/p/4120889.html Insus.NET只实现了文本框的功能.单个或 ...

  6. flutter text 最大长度_Flutter小技巧之TextField换行自适应

    无论哪种界面框架输入文本框都是非常重要的控件, 但是发现flutter中的输入框TextField介绍的虽然多,但是各个属性怎么组合满足需要很多文章却说不清楚, 再加上控件版本变更频繁很多功能的介绍都 ...

  7. Flutter Text详解

    示例 API Text,很常用的一个Widget:用于显示简单样式文本,它包含一些控制文本显示样式的一些属性 text构造方法源码: /// If the [style] argument is nu ...

  8. vb取消文本框的粘贴功能

    以下代码在窗体 程序代码: Option Explicit    '石陆软件屋  Private Sub Form_Load()    g_hOldProc = SetWindowLong(Text1 ...

  9. 仿微信朋友圈,文字展开全文,全文收起功能

    简单操作4步即可实现文字展开收起功能: 1.布局写2个Textview 一个是内容 一个是按钮(收起和全文) <TextView android:layout_marginTop="@ ...

最新文章

  1. 随笔 | 抢红包不是一件小事
  2. Python函数的递归调用
  3. ant design pro总是跨域,proxy也没设置错误,原来是浏览器缓存,清理Chrome缓存就可以了...
  4. xenserver 虚拟机扩容lvm磁盘分区的方法_Linux磁盘扩容
  5. 电子游戏跟计算机有什么关联,电脑和电子游戏对小学生的影响
  6. linux kears 切换后端,如何更改Keras后端(哪里是json文件)?
  7. HBase 基本入门篇
  8. 8年web前端开程序媛,告诉你如何零基础学习web前端
  9. Tornado-Secure cookie and Session
  10. 阿里巴巴小程序繁星计划专题上线,汇集最优扶持资源与最新资讯!
  11. Logisim实验一
  12. 门禁系统java_java实现门禁系统
  13. 第二章 指令:计算机的语言
  14. 《编码:隐匿在计算机软硬件背后的语言》读书笔记整理总结
  15. 威廉玛丽学院计算机专业好吗,威廉玛丽学院计算机
  16. 【Unity3D】sRGB伽马(gamma)空间和sRGB Frame Buffer线性空间的简单介绍
  17. ajax post请求导致的跨域和浏览器兼容性问题
  18. Pr 如何模拟水下音效
  19. Jetson Agx Orin使用最正确的方式安装torch1.11.0,torchvision0.12.0,torchaudio0.11.0保姆级教程
  20. linux p4使用心得

热门文章

  1. Windows Server 2012打开端口
  2. OMRON CP1H PLC脉冲控制三轴伺服, 码垛机,实际 项目,程序结构清析,有完整的注释,重复功能做成FB功能块,在其它项目可以导出直接用,MCGS触摸屏程序,有电气CAD图纸。
  3. managedQuery() 陷阱 Cursor关闭的问题
  4. vs2010工程的图标关联
  5. Java使用JDBC步骤
  6. 求职招聘网站设计与实现(源代码+论文+开题报告+外文翻译+文献综述)_kaic
  7. 睡你的人等不及,爱你的人等得起
  8. IT忍者神龟之修改IE地址栏Tomcat 小猫咪图标
  9. 「转」二级语法知识总结
  10. Java static作用及加载顺序