Flutter - равномерно распределенные отступы внизу каждого элемента ListView - PullRequest
1 голос
/ 14 июля 2020

Я пытаюсь добавить 70,0 пикселей внизу каждого элемента контейнера в моем ListView. Я просматривал много ответов от StackOverflow и пробовал их разными способами, а добавление отступов внутри ListView почему-то не работает. Однако я все еще не мог с этим справиться. Кто-нибудь может дать мне совет, пожалуйста?

class PortfolioRow extends StatelessWidget {    
  @override
  Widget build(BuildContext context) {
    return LayoutBuilder(builder: (context, constraints) {
        return Container(
            margin: const EdgeInsets.only(bottom: 70.0),
            child: StreamBuilder(
                stream: Firestore.instance
                    .collection('portfolio')
                    .where('category')
                    .snapshots(),
                builder: (context, snapshot) {
                  return ListView.builder(
                      physics: ScrollPhysics(),
                      shrinkWrap: true,
                      itemExtent: 450.0,
                      itemCount: snapshot.data.documents.length,
                      itemBuilder: (context, index) => portfolioContainer(
                          context, snapshot.data.documents[index]));
                }));
      ...
}

Widget portfolioContainer(
    BuildContext context, DocumentSnapshot documentSnapshot) {
  return Align(
      child: SizedBox(
          height: 540,
          width: 330,
          child: Container( // if I add padding bottom here, there will be a pixel overflow in my container
            child: Column(children: [
              Container(
                  ...
}

1 Ответ

1 голос
/ 14 июля 2020

ListView имеет именованный конструктор именно для этого: ListView.separated(). Параметр separatorBuilder позволяет указать виджет, который будет добавлен в конце каждого элемента:

ListView.separated(
  itemCount: 25,
  separatorBuilder: (BuildContext context, int index) => Divider(),
  itemBuilder: (BuildContext context, int index) {
    return ListTile(
      title: Text('item $index'),
    );
  },
)
...