Флаттер. Как расширить первый дочерний элемент строки до высоты списка в качестве второго дочернего элемента? - PullRequest
0 голосов
/ 03 апреля 2020

Мой пример кода:

  Row(
      children: <Widget>[
        Container(
          color: Colors.red,
          child: Text('text'),
        ),
        Expanded(
          child: Container(
            color: Colors.green,
            child: ListView(
              shrinkWrap: true,
              children: <Widget>[
                ListTile(
                  title: Text('Title1'),
                ),
                ListTile(
                  title: Text('Title2'),
                )
              ],
            ),
          ),
        )
      ],
    )

enter image description here

Как расширить первый контейнер до высоты Listview? Я попробовал IntrinsicHeight, но он не работает с listview.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Намного проще было бы изменить Listview на Column и обернуть его SingleChildScrollView, затем обернуть строку IntrinsicHeight

Код:

body: IntrinsicHeight(
    child: Row(
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: <Widget>[
        Container(
          color: Colors.red,
          child: Text('text'),
        ),
        Flexible(
          child: Container(
            color: Colors.green,
            child: SingleChildScrollView(
              child: Column(
                //   shrinkWrap: true,
                children: <Widget>[
                  ListTile(
                    title: Text('Title1'),
                  ),
                  ListTile(
                    title: Text('Title2'),
                  ),
                  ListTile(
                    title: Text('Title1'),
                  ),
                  ListTile(
                    title: Text('Title2'),
                  ),
                  ListTile(
                    title: Text('Title1'),
                  ),
                ],
              ),
            ),
          ),
        )
      ],
    ),
  ),
0 голосов
/ 03 апреля 2020

Назначьте контроллер списка списку и используйте его свойство position.viewportDimension, чтобы получить высоту.

Однако, должен быть сброс кадра, так как вам нужно ждать, пока элемент списка не будет уложен на экране, прежде чем вы сможете получить доступ к размеру области просмотра.

Проверьте этот пример в dartpad

Нажмите кнопку + в примере, чтобы добавить элементы списка. Вы можете заметить задержку кадров, но она работает.

Надеюсь, это поможет!

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