277  字
  1  分钟 
  Flutter 文字溢出省略中间或前面 
 文字溢出
当文字过长,通常会换行(softWrap)、以省略号替代溢出的部分(ellipsis)、渐隐(fade)。以上的方案,可以通过设置Text的overflow、softWrap属性实现。

想法
但如果想要隐藏文字的中间部分,或者开头部分,该如何实现?
实现
可以返回一个LayoutBuilder对象, 通过内部的builder属性的size参数,测算可以显示多少个字符。
LayoutBuilder(builder: (context, size) {    /// 是否溢出    bool exceeded = false;    /// 可以显示的文字长度    int len = 0;
    for (; !exceeded && len < str!.length; len++) {      // Build the textspan      var span = TextSpan(        text: '...' + str.substring(str.length - len),        style: TextStyle(            fontSize:                Theme.of(context).textTheme.bodyText1?.fontSize ??                    14),      );      // 使用[TextPainter]来校验文字是否超过了[maxLines]      var tp = TextPainter(        maxLines: 1,        textAlign: TextAlign.left,        textDirection: TextDirection.ltr,        text: span,      );      // 使其布局来校验      tp.layout(maxWidth: size.maxWidth);      // 根据[tp]的布局结果的[didExceedMaxLines]属性来判断是否溢出      exceeded = tp.didExceedMaxLines;    }    return Text(      /// 构造Text,此处为省略前面的部分,替换为省略号      (exceeded ? '...' : '') + str!.substring(str.length - len),      overflow: TextOverflow.clip,      maxLines: 1,      style: const TextStyle(color: Colors.grey),    );  })
源码
 Flutter 文字溢出省略中间或前面 
  https://blog.lpkt.cn/posts/ftmo/     
  