我使用此代碼滾動:
WidgetsBinding.instance?.addPostFrameCallback((_) => _scrollToEnd());
_scrollToEnd() 方法是:
_scrollController.animateTo(
_scrollController.position.maxScrollExtent,
duration: const Duration(
milliseconds: 200,
),
curve: Curves.easeInOut,
);
把它想象成一個普通的聊天螢屏。如果訊息在 1 行,它會滾動到底部。但是一旦訊息達到 2 行,它就很難滾動到裸露的底部。訊息的行數越多,滾動到底部的次數就越少。
這是我進入聊天時的樣子:

但如果我進一步向下滾動,這是聊天的底部:

我注意到還有一種情況:
- 我進入聊天。
- 它像第一張圖片一樣向下滾動。
- 如果我點擊螢屏上的任何地方,它會繼續滾動到串列視圖的底部,就像第二張圖片一樣。
為什么會發生這種情況,我該如何解決?
謝謝
uj5u.com熱心網友回復:
我做了什么,使用 listView 并反轉 true,在兒童中使用 map.reversed 串列,我在下面給你我的代碼示例。
ListView(
reverse: true,
children: controller.listMessageData.reversed
.map((e) => Container(child: Text(e.title));
uj5u.com熱心網友回復:
使用 ScrollController 因為它運行流暢且易于使用
ScrollController _scrollController = new ScrollController();
像這樣將控制器添加到 LisView:
ListView.builder(controller: _scrollController,)
在您的 initState 中導航到此螢屏時滾動到底部
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
if (_scrollController.hasClients) {
_scrollController.animateTo(
_scrollController.position.maxScrollExtent,
curve: Curves.easeOut,
duration: const Duration(milliseconds: 500),
);
}
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/337375.html
