今天我又一次尝试将一个颤振列表的标题放在中间。在过去的几天里,我花了一两个小时的时间,咕噜咕噜,尝试一些事情,然后失去冷静,放弃了。
我只是在学习颤振和热爱这个概念,但却找不到视频培训课程(lynda.com、udemy.com等)。我已经阅读了相关的文档,但是当我试图将它们应用到我的代码中时,无法去掉所有出现的红线。
语法中一定有逻辑,但两周后我还没搞清楚。
回到问题上来,我试过了
List<Widget> list = <Widget>[
new ListTile(
new child: Center (
title:
new Text('Title 1',
style: new TextStyle(
fontWeight: FontWeight.w500,
color: Colors.deepOrangeAccent,
fontSize: 25.0)),
)
),
];
List<Widget> list = <Widget>[
new ListTile(
title:
new child: Center (
new Text('Title 2',
style: new TextStyle(
fontWeight: FontWeight.w500,
color: Colors.deepOrangeAccent,
fontSize: 25.0)),
)
),
];
List<Widget> list = <Widget>[
new ListTile(
child: Center
title: (
new Text('Title 3',
style: new TextStyle(
fontWeight: FontWeight.w500,
color: Colors.deepOrangeAccent,
fontSize: 25.0)),
)
),
];
List<Widget> list = <Widget>[
new ListTile(
title: Center
new Text('Title 4',
style: new TextStyle(
fontWeight: FontWeight.w500,
color: Colors.deepOrangeAccent,
fontSize: 25.0)),
)
),
];
请帮我解决这个问题,还有在哪里可以找到关于颤振的视频课程?
从正面看,如果这种情况持续下去,我将不再是灰色,而是秃顶。
我想我是在向文本对象添加“textAllign:textAllign.center”时计算出来的。没有红线,但文本仍然左对齐。
最佳答案
我不确定您尝试了什么,但是为了使title
的ListTile
居中,您可以像在代码中那样使用center
小部件,或者将文本包装在Row
小部件中并设置mainAxisAlignment: MainAxisAlignment.center
。
使用Center
小部件:
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text("ListTile Example"),),
body: new ListView(
children: new List.generate(7, (int index) {
return new ListTile(
title: new Center(child: new Text("Centered Title#$index",
style: new TextStyle(
fontWeight: FontWeight.w500, fontSize: 25.0),)),
subtitle: new Text("My title is centered"),
);
}),
),
);
}
使用
Row
小部件: @override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text("ListTile Example"),),
body: new ListView(
children: new List.generate(7, (int index) {
return new ListTile(
title: new Row(children: <Widget>[new Text("Centered Title#$index",
style: new TextStyle(
fontWeight: FontWeight.w500, fontSize: 25.0),)
], mainAxisAlignment: MainAxisAlignment.center,),
subtitle: new Text("My title is centered"),
);
}),
),
);
}
但是,您的问题不是标题居中,而是您试图在一个小区域内插入一个过大的
Text
,这就是为什么您得到红线,所以一个解决方案是选择一个较小的fontSize
,一个更好的解决方案是去掉ListTile
并构建自己的自定义小部件,因为ListTile
是单个固定高度行,通常包含一些文本以及
前导或尾随图标。
因此,如果您使用的是更大的小部件,则不应使用它。
这是如何创建类似于
ListTile
的自定义小部件的简单示例,但在处理较大的项目时更灵活和可自定义:@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text("ListTile Example"),),
body: new ListView(
children: new List.generate(7, (int index) {
return new Container(
padding: const EdgeInsets.symmetric(
vertical: 10.0, horizontal: 20.0),
child: new Column(
children: <Widget>[
new Align (child: new Text("Centered Title $index",
style: new TextStyle(fontSize: 40.0),), //so big text
alignment: FractionalOffset.topLeft,),
new Divider(color: Colors.blue,),
new Align (child: new Text("Subtitle $index"),
alignment: FractionalOffset.topLeft,),
new Divider(color: Colors.blue,),
new Align (child: new Text("More stuff $index"),
alignment: FractionalOffset.topLeft,),
new Row(mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[ //add some actions, icons...etc
new FlatButton(onPressed: () {}, child: new Text("EDIT")),
new FlatButton(onPressed: () {},
child: new Text("DELETE",
style: new TextStyle(color: Colors.redAccent),))
],),
],
),
);
}),
)
);
}
关于flutter - 如何在Flutter中将ListTile的标题居中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47107027/