これはおそらく非常に簡単に修正できる質問ですが、とにかくここで質問したほうがよいと思いました:ウィジェットを 内に固定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
助言がありますか?