Как поместить элемент в ListView на весь экран во Flutter
Я хочу иметь прокручиваемое представление с фиксированным количеством элементов. первый элемент должен покрывать родительский контейнер, а затем пользователь может прокрутить вниз, чтобы увидеть остальные элементы.
Я пытался добавить Expanded к первому элементу, но у меня белый экран
ListView(
children: <Widget>[
Expanded(child: MainInfo(),),
Divider(height: 2, color: Colors.black,),
MainInfo(),
Divider(height: 2, color: Colors.black,),
MainInfo(),
Divider(height: 2, color: Colors.black,),
MainInfo(),
Divider(height: 2, color: Colors.black,),
MainInfo(),
],
),
Должен ли я использовать ListView или SingleChildScrollView (не работал с Expanded также)?
2 ответа
Решение
Мне удалось сделать это с помощью LayoutBuilder, которые возвращают ListView
LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
return ListView(
children: <Widget>[
Container(
child: MainInfo(),
height: constraints.maxHeight,
),
Divider(
height: 2,
color: Colors.black,
),
MainInfo(),
Divider(
height: 2,
color: Colors.black,
),
MainInfo(),
Divider(
height: 2,
color: Colors.black,
),
MainInfo(),
Divider(
height: 2,
color: Colors.black,
),
MainInfo(),
],
);
}),
Расширенные нельзя использовать внутри прокручиваемых виджетов. Вы можете сделать что-то вроде этого:
ListView(
children: <Widget>[
Container(height:MediaQuery.of(context).size.height,child: MainInfo(),),
Divider(height: 2, color: Colors.black,),
MainInfo(),
Divider(height: 2, color: Colors.black,),
MainInfo(),
Divider(height: 2, color: Colors.black,),
MainInfo(),
Divider(height: 2, color: Colors.black,),
MainInfo(),
],
),