как выровнять элементы внутри ListView по центру?

Подскажите, пожалуйста, как выровнять элементы Tag внутри ListView по центру, когда общая ширина этих элементов помещается в экране и не скролится

Этот пример не работает

Container(
                margin: const EdgeInsets.only(top: 10),
                height: 50,
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    SizedBox(
                      width: MediaQuery.of(context).size.width,
                      child: ListView.builder(
                          padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 20),
                          scrollDirection: Axis.horizontal,
                          itemCount: viewNotes.length,
                          itemBuilder: (context, index) {
                            return Tag(text: viewNotes[index]['tag']);
                          }),
                    ),
                  ],
                )),

Ответы (1 шт):

Автор решения: BE.MO

ListView.builder() сам по себе не имеет параметров для выравнивания по центру.

Возможно Вам лучше подойдет использование Row и SingleChildScrollView виджетов, с формированием дочерних элементов через List.generate() и управлением выравнивания через mainAxisAlignment.

Вот пример:

// контроллер для управления позицией прокрутки    
ScrollController scrollController = ScrollController();

Container(
  margin: const EdgeInsets.only(top: 10),
  height: 50,
  child: SingleChildScrollView(
    controller: scrollController,      
    scrollDirection: Axis.horizontal,
    child: Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: List<Widget>.generate(
        viewNotes.length,
        (index) => Tag(text: viewNotes[index]['tag']),
      ),
    ),
  )
)

Вы также можете обернуть виджет SingleChildScrollView в другой виджет RawScrollbar, если необходимо отображение полосы прокрутки:

RawScrollbar(
  controller: scrollController,
  child: SingleChildScrollView(
    ...
  )
)
→ Ссылка