文本颤动多行

时间:2018-12-17 09:07:39

标签: android flutter flutter-layout

我需要的是多行文本。我正在赋予maxLines的属性,但是它的右边仍然出现RenderFlex的溢出错误,因为下一条不会转到第二行,

      Align( alignment: Alignment.bottomCenter,
      child: new ButtonBar(
        alignment: MainAxisAlignment.center,
        children: <Widget>[
          Padding(
            padding: EdgeInsets.all(20.0),
            child: new Text(
              "This is a very bigggggggg text !!!",textDirection: TextDirection.ltr,
              style: new TextStyle(fontSize: 20.0, color: Colors.white),
              maxLines: 2,
            ),
          )
        ],
      ),
    )

9 个答案:

答案 0 :(得分:4)

只需将文本小部件包装为扩展,如下所示

 Expanded(
       child:  Text("data",maxLines:4,overflow:TextOverflow.ellipsis,textDirection: TextDirection.rtl,textAlign: TextAlign.justify,),
     )

答案 1 :(得分:3)

尝试一下:

Expanded(            
    child: Text(
      'a long text,
      overflow: TextOverflow.clip,
    ),
),

在我的实现中,我将其放在一行中,并在每侧用大小框包围,以便在元素之间留出一定的空间,为什么您可能会问为什么使用expand,所以它占用了尽可能多的空间,因此文字在纵向或横向模式下看起来都不错。

这是一个完整的示例,说明如何使它甚至在垂直方向上(而不是在水平方向上)做出反应:

Card(
  child: InkWell(
    onTap: (){},
    child: Padding(
      padding: const EdgeInsets.all(8.0),
      child: Row(
        children: <Widget>[
          SizedBox(
            height: 70, // default\minimum height
          ),
          Container(
            height: 44,
            width: 44,
            decoration: BoxDecoration(
                color: Colors.blue,
                borderRadius: BorderRadius.all(Radius.circular(22))),
          ),
          SizedBox(
            width: 15,
          ),
          Expanded(
            child: Text(
              'the very long title',
              overflow: TextOverflow.clip,
            ),
          ),
          SizedBox(
            width: 10,
          ),
          Text(
            'value', //some other text in the end of the card or maybe an icon instead
          ),
          SizedBox(
            width: 30,
          ),
        ],
      ),
    ),
  ),
)

答案 2 :(得分:2)

我认为您忘记添加overflow类型。

您可以使用以下内容:

Text(
     "TOP ADDED",
     textAlign: TextAlign.justify,
     overflow: TextOverflow.ellipsis,
     style: TextStyle(fontSize: 18.0),
     maxLines: 2,)

答案 3 :(得分:2)

使用带有列的扩展小部件来实现多行文字。

Expanded(child: 
 Column(crossAxisAlignment: CrossAxisAlignment.start ,
 children: [
            Text(food.title),
            Text(food.price)
           ]
))

答案 4 :(得分:1)

也许尝试使用TextField

new TextField(
  keyboardType: TextInputType.multiline,
  maxLines: 2,
)

答案 5 :(得分:1)

处理此问题的最佳方法:

Expanded(
child: Text(document['content'],
textAlign: TextAlign.start,
overflow: TextOverflow.ellipsis,
maxLines: 20,
))

答案 6 :(得分:1)

只需将文本小部件包装在 Flexible 中即可。因为它只使用它需要的空间。 在 maxLines 之后,它只是切到省略号。

<块引用>

如果您想要无限行,只需删除 maxLines 属性。在Flexible的帮助下,它使用了widget需要的空间。

Flexible(
  child: Text('Long Text', maxLines: 3,
    overflow: TextOverflow.ellipsis,
    textAlign: TextAlign.justify,
  ),
),

答案 7 :(得分:0)

(适用于Google员工) 另外,请知道父窗口小部件需要限制您的宽度,例如:

Container(
  width: 150,
  child: Text(
    "This text is very very very very very very very very very very very very very very very very very very very very very very very very very long",
    overflow: TextOverflow.ellipsis,
    maxLines: 5,
  ),
),

答案 8 :(得分:-1)

您可以使用此技巧。 文字('''这是非常大的文字'''), 只需将文本用三个单引号引起来,然后flutter将根据其长度格式化文本。无需使用最大行数和文本字段。