bus*_*suu 7 mobile android ios dart flutter
我使用这段代码来滚动:
WidgetsBinding.instance?.addPostFrameCallback((_) => _scrollToEnd());
Run Code Online (Sandbox Code Playgroud)
_scrollToEnd()方法是:
_scrollController.animateTo(
_scrollController.position.maxScrollExtent,
duration: const Duration(
milliseconds: 200,
),
curve: Curves.easeInOut,
);
Run Code Online (Sandbox Code Playgroud)
将其想象为一个普通的聊天屏幕。如果消息在 1 行中,它会滚动到裸露的底部。但是,一旦消息达到 2 行以上,它就不会一直滚动到底部。消息的行数越多,滚动到底部的次数就越少。
这是我进入聊天时的样子:

但如果我进一步向下滚动,这就是聊天的底部:

我注意到还有一种情况:
为什么会发生这种情况以及如何解决这个问题?
小智 11
我所做的,使用 listView 并反向 true 并在儿童中使用 map.reversed 列表,我在下面给你我的代码示例。
ListView(
reverse: true,
children: controller.listMessageData.reversed
.map((e) => Container(child: Text(e.title));
Run Code Online (Sandbox Code Playgroud)
Kau*_*dru 10
只是一个解决方法,但它应该按预期工作。在列表视图中使用夹紧物理。在最大范围内添加额外的数字
_scrollController.animateTo(
_scrollController.position.maxScrollExtent+300,
duration: const Duration(
milliseconds: 200,
),
curve: Curves.easeInOut,
);
Run Code Online (Sandbox Code Playgroud)
bus*_*suu 10
我终于找到了解决办法。所有答案都不适合我,或者部分有效,但我感谢您尝试回答。
对我来说,我所要做的就是把
reverse: true
Run Code Online (Sandbox Code Playgroud)
在 ListView 构建器中,然后每当您返回消息时,您需要将其返回为:
return messages[messages.length - 1 - index];
Run Code Online (Sandbox Code Playgroud)
这是最重要的部分。
| 归档时间: |
|
| 查看次数: |
7999 次 |
| 最近记录: |