溢出到文本小部件忽略可用空间

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

没有指定最大行数,文本在 1 行后被截断。如果值大于父级允许的大小,则文本超出父级并且没有错误。

expected

   @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: SafeArea(
            child: Material(
              child: Column(
                children: [
                  Container(
                    color: Colors.black12,
                    height: 100,
                    child: Text(
                      'dsf sdf ds fs dfsdfdf  iuh gyj gy y'
                          ' guygiukjh  uiygihjo; rdtfyguhijok rftyguhij yguhij'
                          'dsf sdf ds fs dfsdfdf  iuh gyj gy y'
                          ' guygiukjh  uiygihjo; rdtfyguhijok rftyguhij yguhij'
                          'dsf sdf ds fs dfsdfdf  iuh gyj gy y'
                          ' guygiukjh  uiygihjo; rdtfyguhijok rftyguhij yguhij'
                          'dsf sdf ds fs dfsdfdf  iuh gyj gy y'
                          ' guygiukjh  uiygihjo; rdtfyguhijok rftyguhij yguhij'
                          'dsf sdf ds fs dfsdfdf  iuh gyj gy y'
                          ' guygiukjh  uiygihjo; rdtfyguhijok rftyguhij yguhij',
                      overflow: TextOverflow.ellipsis,
                      maxLines: 122,
                    ),
                  ),
                ],
              ),
            ),
          ),
        );
      }

softWrap 没有任何影响,也无助于包裹 Flexible 和 Expanded。

flutter
5个回答
0
投票

只需删除

height: 100,
它就会被修复。


0
投票

将 TextOverflow.ellipsis 替换为:

overflow: TextOverflow.visible,
overflow: TextOverflow.clip,

TextOverflow.visible:文本将可见,但你必须 在你的情况下增加容器的高度

TextOverflow.clip:文本将可见,容器高度可以 包含


0
投票

从代码中删除以下两行。

                    overflow: TextOverflow.ellipsis,
                    maxLines: 122,

已编辑

并添加

textAlign
作为
justify

textAlign: TextAlign.justify,

0
投票

maxLines
确实给出了这种奇怪的行为。 由于您对高度进行了硬编码,因此只需使用适合该高度的硬编码 maxLines 即可。然后按照一些答案的建议,用
Expanded
包裹你的文字。如您所愿,如果
maxLines
不适合给定的高度,这将显示溢出警告。

Container(height: 100, child: Column(
      children: [
           Row(
            children: [
              Expanded(
                child: Text(
                  'dsf sdf ds fs dfsdfdf  iuh gyj gy y'
                      ' guygiukjh  uiygihjo; rdtfyguhijok rftyguhij yguhij'
                      'dsf sdf ds fs dfsdfdf  iuh gyj gy y'
                      ' guygiukjh  uiygihjo; rdtfyguhijok rftyguhij yguhij'
                      'dsf sdf ds fs dfsdfdf  iuh gyj gy y'
                      ' guygiukjh  uiygihjo; rdtfyguhijok rftyguhij yguhij'
                      'dsf sdf ds fs dfsdfdf  iuh gyj gy y'
                      ' guygiukjh  uiygihjo; rdtfyguhijok rftyguhij yguhij'
                      'dsf sdf ds fs dfsdfdf  iuh gyj gy y'
                      ' guygiukjh  uiygihjo; rdtfyguhijok rftyguhij yguhij'
                      'dsf sdf ds fs dfsdfdf  iuh gyj gy y'
                      ' guygiukjh  uiygihjo; rdtfyguhijok rftyguhij yguhij'
                      'dsf sdf ds fs dfsdfdf  iuh gyj gy y'
                      ' guygiukjh  uiygihjo; rdtfyguhijok rftyguhij yguhij'
                      'dsf sdf ds fs dfsdfdf  iuh gyj gy y'
                      ' guygiukjh  uiygihjo; rdtfyguhijok rftyguhij yguhij',
                  overflow: TextOverflow.ellipsis,
                  maxLines: 14,
                ),
              ),
            ],
          ),

      ],
    ));

0
投票

您需要将 SingleChildScrollView 包装在一个文本小部件中,您将得到您想要的东西。

      return MaterialApp(
  home: SafeArea(
    child: Material(
      child: Column(
        children: [
          Container(
            color: Colors.black12,
            height: 100,
            padding: EdgeInsets.only(bottom: 4),
            child: Text(
              'dsf sdf ds fs dfsdfdf  iuh gyj gy y'
              ' guygiukjh  uiygihjo; rdtfyguhijok rftyguhij yguhij'
              'dsf sdf ds fs dfsdfdf  iuh gyj gy y'
              ' guygiukjh  uiygihjo; rdtfyguhijok rftyguhij yguhij'
              'dsf sdf ds fs dfsdfdf  iuh gyj gy y'
              ' guygiukjh  uiygihjo; rdtfyguhijok rftyguhij yguhij'
              'dsf sdf ds fs dfsdfdf  iuh gyj gy y'
              ' guygiukjh  uiygihjo; rdtfyguhijok rftyguhij yguhij'
              'dsf sdf ds fs dfsdfdf  iuh gyj gy y'
              ' guygiukjh  uiygihjo; rdtfyguhijok rftyguhij yguhij',
              overflow: TextOverflow.ellipsis,
              maxLines: 122,
            ),
          ),
        ],
      ),
    ),
  ),
);
© www.soinside.com 2019 - 2024. All rights reserved.