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

Jie Hart

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

我只是在学习Flutter,并且喜欢这个概念,但是找不到任何视频培训课程(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的视频课程?

从好的方面来看,如果这种情况继续下去,我将不再是灰色,我将变成秃头。

我以为我在文本对象中添加了“ textAlign:TextAlign.center”后就解决了。没有红线,但文本仍然对齐。

阿齐扎

我不确定您尝试了什么,但是为了使居中titleListTile您可以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并建立自己的自定义小部件,因为aListTile

固定高度的单个行,通常包含一些文本以及前导或尾随图标。

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

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

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章