0

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

4

1 に答える 1