Flutter 中的 ListView 居中

Posted

技术标签:

【中文标题】Flutter 中的 ListView 居中【英文标题】:Centering ListView in Flutter 【发布时间】:2019-03-27 14:08:50 【问题描述】:

我正在尝试制作带有徽标的登录/注册屏幕。我需要它们响应,所以可以适合大多数移动屏幕。为了实现这一点,我使用了 ListView。但是,我只需要将 ListView 在我的布局中居中。有什么建议吗?

这是我的尝试:

@override
  Widget build(BuildContext context) 
    return Scaffold(
        body: Center(
        child: ListView(
          children: <Widget>[
            Image.asset('assets/images/logo.png', scale: 3.0,),
            InputField('enter email address', Icons.email, TextInputType.emailAddress),
            PasswordInputField('enter password', Icons.lock, TextInputType.text),
            RoundBtn('SIGN IN', signIn),
            RoundBtn('SIGN UP', () => ),
            OutlineBtn('FORGOT PASSWORD?', () => )
          ],
        ),
      )
    );
  

Login Screen Registration Screen

【问题讨论】:

也许 shrinkWrap: true,可以提供帮助 【参考方案1】:

使用 SingleChildScrollView 而不是 ListView。 试试这个...

 @override
  Widget build(BuildContext context) 
    return Scaffold(
        body: Center(
          child: SingleChildScrollView(
            child: Column(
            children: <Widget>[
              Image.asset('assets/images/logo.png', scale: 3.0,),
              InputField('enter email address', Icons.email, TextInputType.emailAddress),
              PasswordInputField('enter password', Icons.lock, TextInputType.text),
              RoundBtn('SIGN IN', signIn),
              RoundBtn('SIGN UP', () => ),
              OutlineBtn('FORGOT PASSWORD?', () => )
            ],
          ),
        ),)
    );
  

【讨论】:

【参考方案2】:

ListView 不能添加到屏幕的中心。尽管如此,还没有官方文档。但是,如果你想这样做

示例:

Center(
    child: ListView(
      shrinkWrap: true,
      children: <Widget>[
        Center(child: Text('Text1')),
        Center(child: Text('Text2')),
        Center(child: Text('Text3')),
      ],
    ),
  )

输出:

【讨论】:

【参考方案3】: 在 ListView 中使用 shrinkWrap: true
 child: ListView(
      shrinkWrap: true,
      ......
    ),

【讨论】:

以上是关于Flutter 中的 ListView 居中的主要内容,如果未能解决你的问题,请参考以下文章

Flutter - 另一个 Listview 中的 Listview.builder

自定义ListView的RelativeLayout中的Android布局居中

Flutter中的ListView动态排序

c# listview 大图标显示时,项中的标签文本居中显示怎么设置?

Flutter:ListView.builder 中的自动垂直高度

如何使用 Flutter 从 Firestore 中的 ListView 获得无限滚动