Это, вероятно, действительно легко исправить вопрос, но я подумал, что в любом случае могу задать его здесь: есть ли способ привязать виджет в CustomScrollView
? Я хочу использовать CustomScrollView
для поддержки гибкого пространства на панели приложения, но мне нужно, чтобы виджет ввода оставался фиксированным в нижней части экрана. Я попытался вложить CustomScrollView
в Column
с данным виджетом, но, похоже, он не работает:
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
CustomScrollView(
slivers: <Widget>[
_buildAppBar(), // Returns a SliverAppBar
_buildMessages(), // Returns a StreamBuilder that returns a SliverList
],
),
MessageInputWidget(), // Input that needs to stay fixed
],
);
}
А вот этот метод _buildMessages ():
Widget _buildMessages(BuildContext context) {
return StreamBuilder<List<Message>>(
stream: widget.classroom.messages(),
builder: (context, snapshot) {
print('[DEBUG] Building chat with updated message stream...');
if (!snapshot.hasData || snapshot.data == null) {
return Center(
child: CircularProgressIndicator(),
);
}
_messages = snapshot.data;
print('[DEBUG] Building ${_messages.length} messages...');
return SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
if (index == _messages.length) {
return _buildHeader(context);
}
return MessageWidget(
message: _messages[index],
isReceived: _user.id != _messages[index].sentBy.id,
showUser: (index ==
0) || // Show _avatar if it's the first msg
(index >=
1 && // Or if it's a different _user than the last
!(_messages[index].sentBy.id ==
_messages[index - 1].sentBy.id)),
);
},
childCount: _messages.length,
),
);
});
}
Какие-либо предложения? Я нашел несколько примеров, но это составляет всю CustomScrollView
а я хочу строить SliverList
только каждый раз, когда получаю новый снимок. Какие-либо предложения?