// 思路: 获取最大行数的尾部的偏移量。

// 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. 微信小程序一定高度文字的展开与收起

    1.实现效果 2.实现思路 1.给文字设置相应的行高,假设想展示10行文字,此时设置一个最大高度是10*文字的行高. 2.获取当前文字盒子的整体高度,若大于设置的高度,添加overflow:hidde ...

  2. uni-app,一段文字实现展开、收起全文点点点

    效果: 思路: 1.根据文本显示的布局中,每行大致能显示的文字个数.(实例是大致每行26个文字) 2.首先加载页面时,根据文字总长度判断是否超出自定义行数,来处理相应的数据,多余自定义行数,截取对应的 ...

  3. flutter 仿微信展开收起两种写法

    第一种是行数判断:项目需求是超过6行显示展开,超过12行跳到其他页面,所以我这样写,其中图片文字可随意改. import 'package:flutter/gestures.dart'; import ...

  4. uni-app中,文字超出隐藏并显示省略号(实现展开、收起全文)

    一.uni-app中,固定宽高,文字超出部分,隐藏并显示省略号. .topic_cont_text{padding: 30upx;colof: #999;background: #E1FFFF;max ...

  5. uni-app Vue3文字超出规定行数时显示展开和收起功能

    一.上图先 二.介绍 在做uni-app项目的过程中需要实现文字超出规定行数显示展开和收起功能,并且字体大小还可以改变,上个厕所回来之后有了解决办法~~~ 已封装为组件 可以控制多少行实现展开收起功能 ...

  6. vue 段落文字太长(长文收缩)点击展开与收起,查看更多,收起,展开

    vue 段落文字太长点击展开与收起 文章目录 vue 段落文字太长点击展开与收起 效果截图 使用方法 组件被调用demo vue部分 属性说明 组件完整代码 效果截图 使用方法 将组件完整代码复制到你 ...

  7. javascript实现一段文字展开、收起(默认收起)

    在线演示 html: <div id="content">2005年以后,互联网进入Web2.0时代,各种类似桌面软件的Web应用大量涌现,网站的前端由此发生了翻天覆地 ...

  8. 视频直播APP源码,通过css控制div内容展开更多/收起效果

    视频直播APP源码,通过css控制div内容展开更多/收起效果 一. 实现思路 需要设置一个变量控制展开 / 收起效果 提前写好最高高度的class样式,超出这个高度多余内容会隐藏 只有在列表数据长度 ...

  9. 【文本展开收起】uniapp—实现文本的展开与收起功能

    一.实现效果 二.代码实现 2.1 思路: 1.根据文本显示的布局中,每行大致能显示的文字个数 2.首先加载页面时,根据文字总长度判断是否超出自定义行数,来处理相应的数据,多余自定义行数,截取对应的文 ...

最新文章

  1. 技术 | Web前端开发(4)持续更新
  2. https 证书验证等原理
  3. jqgrid的函数与操作
  4. SD--订单最小量限制的增强
  5. [转] vim 正则表达式 很强大
  6. js学习总结----编写简单的ajax方法库
  7. 当你的程序在朋友的机器上显示丢失msvcr100d.dll的时候
  8. linux top cpu瓶颈,Linux命令----分析CPU的瓶颈
  9. NumPy数值计算库-1
  10. 模块电源(三):PCB Layout
  11. 半导体界仙童“八叛逆”又一人去世,仅存一人!
  12. iperf3 linux源码下载
  13. 算法设计与分析期末复习
  14. 洛谷试炼场 计数问题
  15. 【阿里开发规范】Java开发手册(嵩山版)
  16. 自动整理html书签,Bookmarks Organizer - Chrome书签整理排序
  17. quot;紫陀螺quot;网友感触转载系列之…
  18. 香港各个大学计算机类专业
  19. 关于商业智能BI,你需要知道的相关知识都在这里了
  20. 微信小程序下拉框的实现功能

热门文章

  1. 客户端返回400错误
  2. virtual box之前创建的虚拟机,打开黑屏的解决办法
  3. vivado仿真注意事项总结
  4. vue配置启动项目自动打开浏览器
  5. 【kafka】kafka kerberos TGT renewal thread has been interrupted and will exit
  6. The case for the reduced Instruction Set computer读后感
  7. (一)第一个Python程序
  8. Improved Residual Networks for Image and Video Recognition
  9. 并行计算 python_一分钟了解 Python 中的并行计算
  10. ensp模拟器构建局域网络与使用模拟器接入互联网