flutter 文字的展开以及收起
// 思路: 获取最大行数的尾部的偏移量。
// 2. 在偏移量的尾部截图 展开或者收起的文字的大小
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:merchant/config.dart';class OtherExpandableText extends StatefulWidget {final String? text;final TextStyle? style;final int? maxLines;final String expandText;final String collapseText;const OtherExpandableText({Key? key,this.text,this.style,this.maxLines,required this.collapseText,required this.expandText}): super(key: key);@overrideState<OtherExpandableText> createState() => _OtherExpandableTextState();
}class _OtherExpandableTextState extends State<OtherExpandableText> {bool expand = false;String linkText = "";@overrideWidget build(BuildContext context) {return LayoutBuilder(builder: (BuildContext context, BoxConstraints constraints) {// 思路: 获取最大行数的尾部的偏移量。// 2. 在偏移量的尾部截图 展开或者收起的文字的大小//第二种:var span = TextSpan(text: widget.text, style: widget.style);var textPainer = TextPainter(text: span,maxLines: widget.maxLines,textDirection: TextDirection.ltr);textPainer.layout(maxWidth: constraints.maxWidth);final textSize = textPainer.size;var position = textPainer.getPositionForOffset(Offset(textSize.width,textSize.height,));final endOffset = textPainer.getOffsetBefore(position.offset);// if (textPainter.didExceedMaxLines) {//超出return RichText(// maxLines: expand ? null : widget.maxLines,text: TextSpan(text: expand? widget.text: widget.text!.substring(0,// endOffset(endOffset! -(expand? widget.collapseText.length - 1: widget.expandText.length - 1))),style: TextStyle(overflow: TextOverflow.ellipsis,color: Config.secondTextColor,fontWeight: FontWeight.w500,),children: [TextSpan(text: expand ? widget.collapseText : widget.expandText,style: TextStyle(color: Config.primaryTextColor,fontWeight: FontWeight.w500,fontSize: 28.rpx,),recognizer: TapGestureRecognizer()..onTap = () {print("展开");setState(() {expand = !expand;});}),]),);// } else {// return Text(widget.text ?? "");// }});}
}
flutter 文字的展开以及收起相关推荐
- 微信小程序一定高度文字的展开与收起
1.实现效果 2.实现思路 1.给文字设置相应的行高,假设想展示10行文字,此时设置一个最大高度是10*文字的行高. 2.获取当前文字盒子的整体高度,若大于设置的高度,添加overflow:hidde ...
- uni-app,一段文字实现展开、收起全文点点点
效果: 思路: 1.根据文本显示的布局中,每行大致能显示的文字个数.(实例是大致每行26个文字) 2.首先加载页面时,根据文字总长度判断是否超出自定义行数,来处理相应的数据,多余自定义行数,截取对应的 ...
- flutter 仿微信展开收起两种写法
第一种是行数判断:项目需求是超过6行显示展开,超过12行跳到其他页面,所以我这样写,其中图片文字可随意改. import 'package:flutter/gestures.dart'; import ...
- uni-app中,文字超出隐藏并显示省略号(实现展开、收起全文)
一.uni-app中,固定宽高,文字超出部分,隐藏并显示省略号. .topic_cont_text{padding: 30upx;colof: #999;background: #E1FFFF;max ...
- uni-app Vue3文字超出规定行数时显示展开和收起功能
一.上图先 二.介绍 在做uni-app项目的过程中需要实现文字超出规定行数显示展开和收起功能,并且字体大小还可以改变,上个厕所回来之后有了解决办法~~~ 已封装为组件 可以控制多少行实现展开收起功能 ...
- vue 段落文字太长(长文收缩)点击展开与收起,查看更多,收起,展开
vue 段落文字太长点击展开与收起 文章目录 vue 段落文字太长点击展开与收起 效果截图 使用方法 组件被调用demo vue部分 属性说明 组件完整代码 效果截图 使用方法 将组件完整代码复制到你 ...
- javascript实现一段文字展开、收起(默认收起)
在线演示 html: <div id="content">2005年以后,互联网进入Web2.0时代,各种类似桌面软件的Web应用大量涌现,网站的前端由此发生了翻天覆地 ...
- 视频直播APP源码,通过css控制div内容展开更多/收起效果
视频直播APP源码,通过css控制div内容展开更多/收起效果 一. 实现思路 需要设置一个变量控制展开 / 收起效果 提前写好最高高度的class样式,超出这个高度多余内容会隐藏 只有在列表数据长度 ...
- 【文本展开收起】uniapp—实现文本的展开与收起功能
一.实现效果 二.代码实现 2.1 思路: 1.根据文本显示的布局中,每行大致能显示的文字个数 2.首先加载页面时,根据文字总长度判断是否超出自定义行数,来处理相应的数据,多余自定义行数,截取对应的文 ...
最新文章
- 技术 | Web前端开发(4)持续更新
- https 证书验证等原理
- jqgrid的函数与操作
- SD--订单最小量限制的增强
- [转] vim 正则表达式 很强大
- js学习总结----编写简单的ajax方法库
- 当你的程序在朋友的机器上显示丢失msvcr100d.dll的时候
- linux top cpu瓶颈,Linux命令----分析CPU的瓶颈
- NumPy数值计算库-1
- 模块电源(三):PCB Layout
- 半导体界仙童“八叛逆”又一人去世,仅存一人!
- iperf3 linux源码下载
- 算法设计与分析期末复习
- 洛谷试炼场 计数问题
- 【阿里开发规范】Java开发手册(嵩山版)
- 自动整理html书签,Bookmarks Organizer - Chrome书签整理排序
- quot;紫陀螺quot;网友感触转载系列之…
- 香港各个大学计算机类专业
- 关于商业智能BI,你需要知道的相关知识都在这里了
- 微信小程序下拉框的实现功能
热门文章
- 客户端返回400错误
- virtual box之前创建的虚拟机,打开黑屏的解决办法
- vivado仿真注意事项总结
- vue配置启动项目自动打开浏览器
- 【kafka】kafka kerberos TGT renewal thread has been interrupted and will exit
- The case for the reduced Instruction Set computer读后感
- (一)第一个Python程序
- Improved Residual Networks for Image and Video Recognition
- 并行计算 python_一分钟了解 Python 中的并行计算
- ensp模拟器构建局域网络与使用模拟器接入互联网