文本颤动多行

Viv*_*C A 10 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,
            ),
          )
        ],
      ),
    )
Run Code Online (Sandbox Code Playgroud)

小智 26

只需使用 Expanded 包裹您的文本小部件,如下所示

    Expanded(
      child: Text('data', maxLines: 4,
        overflow: TextOverflow.ellipsis,
        textDirection: TextDirection.rtl,
        textAlign: TextAlign.justify,),
    ),
Run Code Online (Sandbox Code Playgroud)

  • 我已经投票了,然后我忘了怎么做,又找到了这个答案。我无法再次投票,所以我决定写一条评论(也许这样我会记得更好)谢谢! (2认同)

Bas*_*ous 17

尝试这个:

Expanded(            
    child: Text(
      'a long text',
      overflow: TextOverflow.clip,
    ),
),
Run Code Online (Sandbox Code Playgroud)

在我的实现中,我将它放在一行中,并在每一边用大小的框包围它,以便我的元素之间有一些空间,为什么使用扩展你可能会问,它习惯于占用尽可能多的空间,以便文本看起来适合纵向或横向模式。

这是一个完整的示例,说明如何使其甚至垂直反应而不仅仅是水平反应:

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,
          ),
        ],
      ),
    ),
  ),
)
Run Code Online (Sandbox Code Playgroud)


Tom*_*m O 15

确保父窗口小部件限制了文本的宽度,然后使用溢出和最大行,例如:

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,
  ),
),
Run Code Online (Sandbox Code Playgroud)

  • 这个解释太好了:精确、简洁、正确。我希望我们有以这种风格编写的官方 Flutter 文档(指南/操作方法)。 (2认同)

Moh*_*oud 13

我想你忘了添加overflow类型。

你可以使用这样的东西:

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


Reh*_*Ali 9

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

如果你想要无限行,只需删除maxLines属性即可。在Flexible的帮助下,它使用了小部件所需的空间。

Flexible(
  child: Text('Long Text', maxLines: 3,
    overflow: TextOverflow.ellipsis,
    textAlign: TextAlign.justify,
  ),
),
Run Code Online (Sandbox Code Playgroud)


小智 7

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

Expanded(child: 
 Column(crossAxisAlignment: CrossAxisAlignment.start ,
 children: [
            Text(food.title),
            Text(food.price)
           ]
))
Run Code Online (Sandbox Code Playgroud)