Как я могу добавить виджет, который находится внизу страницы и прокручивается с ListView?
У меня есть ListView, который создает несколько карт, и под ними я хочу добавить один текстовый виджет, который находится под ListView, но находится в нижней части страницы, что означает, что вам нужно прокрутить вниз последнюю карту, чтобы увидеть ее,
Widget _buildCardList() {
return ListView.builder(
itemBuilder: _buildFoodCards,
itemCount: cardList.length,
);
}
@override
Widget build(BuildContext context) {
return Container(
// constraints: BoxConstraints.expand(),
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [Color(0xff170422), Color(0xff9B22E6)],
stops: [0.75, 1],
),
),
child: Column(
children: <Widget>[
Expanded(child: _buildCardList()),
Text(
'TEXT THAT SHOULD BE SCROLLABLE UNDER THE LISTVIEW',
style: TextStyle(color: Colors.white),
)
],
),
);
}
У меня есть текст, который в настоящее время находится под ListView, но текст является статическим на странице и не прокручивается с ListView.
1 ответ
Решение
Всего несколько изменений, чтобы все заработало:
- установлен
shrinkWrap
знак равноtrue
на вашListView
, - установлен
physics
знак равноNeverScrollableScrollPhysics
на вашListView
, - Добавлять
SingleChildScrollView
как родитель вашегоColumn
, - удалить
Expanded
виджет.
Код
Widget _buildCardList() {
return ListView.builder(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
itemBuilder: _buildFoodCards,
itemCount: cardList.length,
);
}
@override
Widget build(BuildContext context) {
return Container(
// constraints: BoxConstraints.expand(),
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [Color(0xff170422), Color(0xff9B22E6)],
stops: [0.75, 1],
),
),
child: SingleChildScrollView(
child: Column(
children: <Widget>[
_buildCardList(),
Text(
'TEXT THAT SHOULD BE SCROLLABLE UNDER THE LISTVIEW',
style: TextStyle(color: Colors.white),
)
],
),
),
);
}
Надеюсь, это поможет:)