首页 > 解决方案 > Flutter ListView - 如果不扩展超出屏幕,则居中项目

问题描述

我有一个水平 ListView,根据应用程序状态,列表中可能有 1-2 项或许多项。

现在,只要只有少数可用且不需要滚动,我就想让这些项目居中。到目前为止,我的项目总是粘在左侧,正如您在具有石灰背景颜色的 ListView 中看到的那样。我想要的那个居中,即使 2 或 3 个项目可见,但有更多,它应该滚动,然后从左侧开始列出项目。

    return Container(
        color: Colors.lime,
        child: ListView(
            shrinkWrap: true,
            scrollDirection: Axis.horizontal,
            children: listItems));

物品本身是这样的:

  Widget getPersonCircleWidget(BuildContext context, Person p) {
    return Container(
      color: Colors.transparent, //yellow,
      child: Padding(
        padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
        child: CircularProfileAvatar('',
            child: Image(
                fit: BoxFit.cover,
                image:
                    UserPhotoManager.singleton.getUserProfilePhoto(p.userId)),
            borderColor: colorCirclePhotoBorder,
            borderWidth: 2,
            elevation: 10,
            radius: 40,
            onTap: () {
               ....
        }),
      ),
    );
  }

知道如何解决这个问题吗?

在此处输入图像描述

标签: flutterdart

解决方案


ListView只需用小部件包装你的Center

Center(
  child: ListView(
    shrinkWrap: true,
    scrollDirection: Axis.horizontal,
    children: listItems.map<Widget>((a) => CircleAvatar(
      child: Text(a))).toList(),
    ),
),

ListView超过屏幕上的可用空间时,它将自动左对齐。

dartpad上试试。


推荐阅读