gpt4 book ai didi

flutter - 如何在 Flutter 中将 ListTile 的标题居中

转载 作者:IT老高 更新时间:2023-10-28 12:42:50 42 4
gpt4 key购买 nike

我今天再次尝试将 Flutter ListTile 的标题居中。在过去的几天里,我花了一两个小时在谷歌上搜索并尝试一些事情,然后失去了冷静并放弃了。

我刚刚学习 Flutter 并且喜欢这个概念,但找不到视频培训类(class)(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)),
)
),
];

请帮我解决这个问题,以及在哪里可以找到有关 Flutter 的视频类(class)?

从好的方面来说,如果这种情况继续下去,我将不再是灰色的,而是会秃顶。

当我将“textAlign: TextAlign.center”添加到文本对象时,我想我已经解决了。没有红线,但文字仍然左对齐。

最佳答案

我不确定您尝试过什么,但是为了使 ListTiletitle 居中,您可以使用 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

A single fixed-height row that typically contains some text as well as a leading or trailing icon.

因此,如果您使用较大的小部件,则不应使用它。

这是一个简单示例,说明如何创建类似于 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),))
],),
],
),
);
}),
)
);
}

enter image description here

关于flutter - 如何在 Flutter 中将 ListTile 的标题居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47107027/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com