Центрирование последнего ряда элементов в виде сетки флаттера - PullRequest
0 голосов
/ 06 марта 2020

У меня есть динамический c список элементов, которые я выводю в конструктор GridView.count с mainAxisCount 2 (сетка из 2 столбцов). Если длина списка нечетная, последняя строка будет содержать только один элемент. Я хочу, чтобы этот элемент находился по центру экрана, а не по первому столбцу. Можно ли это сделать?

Ответы [ 3 ]

0 голосов
/ 06 марта 2020

Для этого вы можете использовать пакет flutter_staggered_grid_view .

Пример:

 StaggeredGridView.countBuilder(
  crossAxisCount: 4,
  itemCount: 8,
  itemBuilder: (BuildContext context, int index) => Container(
      color: Colors.green,
      child: Center(
        child: new CircleAvatar(
          backgroundColor: Colors.white,
          child: new Text('$index'),
        ),
      )),
  staggeredTileBuilder: (int index) =>
      StaggeredTile.count(2, index.isEven ? 2 : 1),
  mainAxisSpacing: 4.0,
  crossAxisSpacing: 4.0,
)
  1. Счетчик возврата для последней строки как 1 внутри staggeredTileBuilder
  2. Возврат по центру виджета для последней строки внутри itemBuilder
0 голосов
/ 01 мая 2020

Вы можете использовать StaggeredGridView

StaggeredGridView.countBuilder(
    crossAxisCount: 2,
    mainAxisSpacing: 4.0,
    crossAxisSpacing: 4.0,
    itemCount: totalCount,
    itemBuilder: (BuildContext context, int index) {
      return Center(
        child: Container(
          width: w,
          height: w,
          color: Colors.redAccent,
        ),
      );
    },
    staggeredTileBuilder: (int index) =>
        new StaggeredTile.count(index == totalCount-1 ? 2 : 1, 1),
)
0 голосов
/ 06 марта 2020

Как насчет следующих вещей?

  1. Создание GridView с 2n элементом.
  2. Если есть оставшийся элемент, добавьте виджет для последнего одного элемента.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...