Android 文本的颤振多行
我所需要的是我的文本是多行的。我给出了Android 文本的颤振多行,android,flutter,flutter-layout,Android,Flutter,Flutter Layout,我所需要的是我的文本是多行的。我给出了maxLines的属性,但由于下一个不是第二行,所以它仍然在右侧出现RenderFlex溢出错误 Align( alignment: Alignment.bottomCenter, child: new ButtonBar( alignment: MainAxisAlignment.center, children: <Widget>[ Padding(
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,
),
)
],
),
)
Align(对齐:alignment.bottomCenter,
孩子:新纽扣吧(
对齐:MainAxisAlignment.center,
儿童:[
填充物(
填充:所有边缘设置(20.0),
儿童:新文本(
“这是一个非常大的文本!!!”,textDirection:textDirection.ltr,
样式:新文本样式(fontSize:20.0,颜色:Colors.white),
maxLines:2,
),
)
],
),
)
我想你忘了添加溢出
类型
您可以使用以下内容:
Text(
"TOP ADDED",
textAlign: TextAlign.justify,
overflow: TextOverflow.ellipsis,
style: TextStyle(fontSize: 18.0),
maxLines: 2,)
可能尝试使用
文本字段
:
new TextField(
keyboardType: TextInputType.multiline,
maxLines: 2,
)
简短回答
多行文本所需要的就是您的text()
widgets的宽度受到父窗口小部件的限制。例如:
容器(
宽度:150,
子:文本(
“这段文字非常非常非常非常非常非常非常长”,
),
),
长答案
最低限度的工作示例+说明:
导入“包装:颤振/材料.省道”;
void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
home:Scaffold(//文本小部件,多行或非多行,需要小部件树上某个地方的Scaffold小部件。
body:Row(//帮助显示子窗口小部件列表的窗口小部件是“罪魁祸首”,它们使您的文本窗口小部件不知道最大宽度是多少。在OP的示例中,它是ButtonBar窗口小部件。
儿童:[
货柜(
宽度:100,//这有助于文本小部件再次了解最大宽度!如果要使用所有剩余空间,还可以选择使用扩展小部件而不是容器小部件。
child:Center(//我添加这个小部件是为了表明宽度限制小部件不需要是直接的父项。
子:文本(
“这段文字非常非常非常非常非常非常非常长”,
),
),
),
],
),
),
);
}
}
额外的
您还提到了maxlines
。此属性限制了
最大行数。如果这是您想要的,我建议您也使用overflow
属性
容器(
宽度:100,
子:文本(
“这段文字非常非常非常非常非常非常非常长”,
maxLines:2,
溢出:TextOverflow.省略号,
),
),
试试这个:
Expanded(
child: Text(
'a long text',
overflow: TextOverflow.clip,
),
),
在我的实现中,我把它放在一行中,并在每一侧用大小的方框包围,这样我的元素之间就有了一些空间,为什么要使用扩展的呢?你可能会问,它是用来占据尽可能多的空间,这样文本在纵向或横向模式下看起来会很好
下面是一个完整的示例,说明如何使其在垂直方向而不仅仅是水平方向上做出反应:
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,
),
],
),
),
),
)
卡(
孩子:InkWell(
onTap:(){},
孩子:填充(
填充:常数边集全部(8.0),
孩子:排(
儿童:[
大小盒子(
高度:70,//默认值\最小高度
),
容器(
身高:44,
宽度:44,
装饰:盒子装饰(
颜色:颜色,蓝色,
borderRadius:borderRadius.all(半径.圆形(22)),
),
大小盒子(
宽度:15,
),
扩大(
子:文本(
“很长的标题”,
溢出:TextOverflow.clip,
),
),
大小盒子(
宽度:10,
),
正文(
'value',//卡片末尾的其他文字或图标
),
大小盒子(
宽度:30,
),
],
),
),
),
)
只需将您的文本小部件包装为展开的,如下所示
Expanded(
child: Text('data', maxLines: 4,
overflow: TextOverflow.ellipsis,
textDirection: TextDirection.rtl,
textAlign: TextAlign.justify,),
),
你可以使用这个技巧。
文本(“这是非常大的文本”),
只要把一个文本用三个单引号括起来,flatter就会根据文本的长度来设置文本的格式。无需使用最大行数和文本字段。使用带列的扩展小部件来实现多行文本
Expanded(child:
Column(crossAxisAlignment: CrossAxisAlignment.start ,
children: [
Text(food.title),
Text(food.price)
]
))
处理此问题的最佳方法:
Expanded(
child: Text(document['content'],
textAlign: TextAlign.start,
overflow: TextOverflow.ellipsis,
maxLines: 20,
))
只需将文本小部件包装成灵活的文本。因为它只使用它需要的空间。 在maxLines之后,它只是切换到省略号 如果想要无限行,只需删除
maxLines
属性。在Flexible的帮助下,它使用了widget需要的空间
我已经通过删除ButtonBar Childwrapp来修复了这个问题,将你的文本小部件包装在一个灵活的或扩展的小部件中。这个解释非常好:精确、简洁、正确。我希望我们有这样风格的官方颤振文档(指南/指南)。如果我使用TextOverFlow.省略号并使用SingleChildScrollView包装文本小部件,文本不会滚动。但是如果我删除TextOverFlow.省略号,文本将按预期滚动。是否可以使用TextOverFlow.ellipsis和SingleChildScrollView?使用约束的更好方法
Flexible(
child: Text('Long Text', maxLines: 3,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.justify,
),
),