Я относительно новичок во Flutter - работаю над своим приложением уже пару месяцев и добился значительных успехов в некоторых областях, но не в других.У меня возникают проблемы с поиском «правильного способа» для создания ряда моих экранов, которые в некоторой степени похожи.
Короче говоря, кроме панели приложения, на эшафот будет помещаться контейнер, в котором у меня есть сегментный контроль Купертино.Сегментированный элемент управления используется для переключения между элементом управления IndexedStack, который находится «под ним».
Каждый дочерний элемент стека может иметь различное содержимое - иногда представление списка, иногда форму с множеством текстовых вводов, переключателей и т. Д. Поэтому структура может логически выглядеть следующим образом:
Body
SegmentedControl
IndexStack
Child 1
Child N
Моя проблема в том, что я хочу / хочу, чтобы все дочерние элементы стека «заполнили оставшуюся область» тела.Итак, если я могу просто привести здесь некоторые числа, например: устройство имеет высоту 600 пикселей, панель приложений занимает 40, сегментированное управление занимает 60, оставляя 500 пикселей для каждого дочернего стека.Однако на практике я не могу вывести «оставшуюся высоту содержания» моего тела.Я надеюсь (и думаю), что есть какой-то виджет макета или контейнерный виджет, который «автоматически масштабирует все оставшееся пространство», но еще не нашел его.Я перепробовал множество комбинаций разных виджетов, но ни один из них не помог.Вот сжатый блок кода моего макета:
body: Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(top: 16.0, bottom: 16.0),
child: CupertinoSegmentedControl(
children: tabOptions,
onValueChanged: tabChanged,
groupValue: curTabIndex,
),
),
Container(
height: 400.0, //needs to be 'all the rest' instead of a constant
width: double.infinity,
child: ListView(
children: <Widget>[
Text(“Example Text - would really be list tiles"),
Text(“displaying results of database query"),
],
),
),
],
),
),
Я показал только один дочерний элемент индексированного стека.На практике я мог бы иметь несколько.Если я не даю Контейнеру, удерживающему ListView, конечную высоту (и некоторую ширину), RenderBox не может рисовать, то есть я получаю ошибки.Задача состоит в том, чтобы дочерние элементы стека занимали столько места по горизонтали и вертикали, сколько доступно, и чтобы их содержимое можно было «прокручивать» в тех случаях, когда это содержимое превышает заданную высоту.Я попробую все, что кто-нибудь предложит ... Я уверен, что есть способ сделать это.
Спасибо!