Flutter 文本用“/”字符换行

问题描述 投票:0回答:1

我使用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
1个回答
0
投票

这是 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
以便格式化。

© www.soinside.com 2019 - 2024. All rights reserved.