Flutter 解決Text截斷文字顯示不完整的問題

一、字符串截圖問題和解決方案

測試提了一個文字截取異常的Bug,研究了一下flutter的Text組件,發(fā)現(xiàn)沒有類似于Android中TextView的breakStrategy類似的設置。網(wǎng)上搜了一圈沒有發(fā)現(xiàn)特別完美的解決方案,目前主流的解決方案是在字符串的每兩個字符中間插入一個不可見的空格符號'\u200B',下面是一個靜態(tài)方法,大家可以直接復制到自己的工具類中備用。

static String breakWord(String text) {
  if (text.isEmpty) {
    return text;
  }
  String breakWord = ' ';
  text.runes.forEach((element) {
    breakWord += String.fromCharCode(element);
    breakWord += '\u200B';
  });
  return breakWord;
}

使用完上面的代碼后,字符串截取的效果如下:


使用前后的效果對比
二、完整的示例代碼如下:
import 'package:flutter/material.dart';

class TestTextBreakerPage extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(
          "Test Text Breaker",
        ),
      ),
      body: Container(
        child: Center(
          child: Padding(
            padding: const EdgeInsets.symmetric(horizontal: 20.0),
            child: Container(
              color: Colors.amber,
              child: Text(
                "test thisisatestStringthisisatestStringthisisatestStringthisisatestString",
                style: TextStyle(fontSize: 14),
                maxLines: 1,
                overflow: TextOverflow.ellipsis,
              ),
            ),
          ),
        ),
      ),
    );
  }

  static String breakWord(String text) {
    if (text.isEmpty) {
      return text;
    }
    String breakWord = ' ';
    text.runes.forEach((element) {
      breakWord += String.fromCharCode(element);
      breakWord += '\u200B';
    });
    return breakWord;
  }
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容