我使用Flutter在手机上显示长文本如下:
_1_&MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE27/xrMnX8uV6yF/LieGWSVEo0s+aVxCp8oYikEkEmha70jwA/CjMo+OKoy0f6OhBbqiuePVfNgTwoUmLELmVgw==
我将其放置为文本字符串:
Flexible(
child: Text(
longString ?? '',
style: TextStyle(
color: Colors.black,
fontSize: 14,
fontWeight: FontWeight.w500,
),
),
),
但是,手机屏幕尺寸可能不够宽,无法在一行中显示所有单词,它显示为:
_1_&MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE27/
xrMnX8uV6yF/
LieGWSVEo0s+aVxCp8oYikEkEmha70jwA/
CjMo+OKoy0f6OhBbqiuePVfNgTwoUmLELmVgw==
但我预计结果应该是:
_1_&MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE27/
xrMnX8uV6yF/LieGWSVEo0s+aVxCp8oYikEkEmha70j
wA/CjMo+OKoy0f6OhBbqiuePVfNgTwoUmLELmVgw==
如果没有足够的空间,这些“/”字符会将其余字符强制到下一行。我不希望自动换行带有“/”。需要添加什么才能得到预期的结果?
这是 flutter 中的一个悬而未决的问题。基本上允许以受控方式进行文本换行。 https://github.com/flutter/flutter/issues/61081
这是解决方法 替换所有“/”,例如:
.replaceAll("/","/\ufeff")
在您不想中断的字符之间插入零宽度无中断空格“\ufeff”。与上面相同,但不占空间。
Text( "_1_&MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE27/xrMnX8uV6yF/LieGWSVEo0s+aVxCp8oYikEkEmha70jwA/CjMo+OKoy0f6OhBbqiuePVfNgTwoUmLELmVgw==".replaceAll("/","/\ufeff"),
textAlign: TextAlign.justify,
style: TextStyle(
color: Colors.black,
fontSize: 14,
fontWeight: FontWeight.w500,
),
),
还添加了
TextAlign.justify
以便格式化。