как выровнять элементы внутри 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(
...
)
)