Элементы в ListView получают его высоту - PullRequest
1 голос
/ 30 апреля 2020

Я пытаюсь создать горизонтальный список с какой-нибудь картой. Я хочу, чтобы представление списка имело высоту X, а карточки имели высоту Y, я не знаю почему, но карточки получают высоту представления списка. Вот что у меня есть:

class FinanceApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SafeArea(
        child: Container(
          color: Color(0x180000),
          child: Column(
            children: <Widget>[
              Header(),
              SizedBox(
                height: 20,
              ),
              Expanded(
                child: Container(
                  width: double.infinity,
                  decoration: BoxDecoration(
                    color: Colors.white,
                    borderRadius: BorderRadius.only(
                      topLeft: Radius.circular(32.0),
                      topRight: Radius.circular(32.0),
                    ),
                  ),
                  child: Column(
                    children: <Widget>[
                      Container(
                        height: 250,
                        child: ListView(
                          scrollDirection: Axis.horizontal,
                          children: <Widget>[
                            CustomCard(),
                            CustomCard(),
                          ],
                        ),
                      ),
                    ],
                  ),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

РЕДАКТИРОВАТЬ: Единственное, что мне нравится, это завернуть контейнер для карт в другой контейнер, использовать отступы, чтобы получить желаемый размер, но это не похоже как отличное решение.

1 Ответ

3 голосов
/ 30 апреля 2020

Проверьте это:

      import 'package:flutter/material.dart';


      class StackOverFlow extends StatefulWidget {
        @override
        _StackOverFlowState createState() => _StackOverFlowState();
      }

      class _StackOverFlowState extends State<StackOverFlow> {
        @override
        Widget build(BuildContext context) {
          return Scaffold(
            body:

            Center(
              child: Container(
                color: Colors.blue,
                height: 200.0,
                width: double.infinity,
                child: ListView.builder(
                  physics: BouncingScrollPhysics(),
                  scrollDirection: Axis.horizontal,
                  padding: const EdgeInsets.all(16.0),
                  itemCount: 100,
                  itemBuilder: _buildItem,
                ),
              ),
            ),
          );
        }

        Widget _buildItem (BuildContext context, int index) {
          return Center(
            child: Card(
              child: Text(index.toString()),
            ),
          );
        }
      }

enter image description here

И для того, чтобы дать детям того же размера, оберните карточки контейнером:

        Widget _buildItem (BuildContext context, int index) {
          return Center(
            child: Container(
              height: 100.0,
              width: 100.0,
              child: Card(
                child: Center(child: Text(index.toString())),
              ),
            ),
          );
        }

enter image description here

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