HarmonyOS List的scrollEdge不起作用?

期望:进入某个会话后,加载完本地数据,将List滚动到最底部

实现过程及问题:我是通过List组件配合LazyForEach来展示数据的,数据展示没问题,但是每次进入会话页面,加载完本地数据,立即调用scrollEdge 无法滚动到底部,如果加延时调用scrollEdge就能滚动到底部

//进入会话 加载消息
IMCenter.getInstance().getHistoryMessages(conversationId, conversationType,
  (messages: Message[]) => {
    //addArray会立即触发listener.onDataAdd(index)
    this.dataSource.addArray(messages)
    //数据存到dataSource后,立马滚动到底部
    this.scroller.scrollEdge(Edge.Bottom)
  });

我认为 this.dataSource.addArray(messages) 执行后,List数据已经更新了,为什么滚动却没起作用呢?

阅读 514
1 个回答
this.dataSource.addArray(messages)
//数据存到dataSource后,立马滚动到底部
this.scroller.scrollEdge(Edge.Bottom)

这样连续着scrolledge不行,因为加了数据还没来得及刷新,List还是在底部,没法往下面滚动

可以尝试把this.scroller.scrollEdge(Edge.Bottom)放在animateTo闭包里,强制刷一下试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进