Flutter ListView - центрировать элементы, если они не выходят за пределы экрана - PullRequest
0 голосов
/ 04 мая 2020

У меня есть горизонтальный 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: () {
               ....
        }),
      ),
    );
  }

Есть идеи, как это решить?

enter image description here

1 Ответ

1 голос
/ 04 мая 2020

Просто оберните ваш ListView виджетом Center.

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

Когда ListView превысит доступное пространство на экране, он автоматически выровняется влево.

Попробуйте его dartpad .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...