【发布时间】:2020-04-14 19:11:37
【问题描述】:
我正在向ListView 动态添加项目。当我添加新项目时,它应该像 WhatsApp 应用程序一样滚动到底部。
我就是这样做的
setState(() {
_textList.add(text);
});
_scrollController.animateTo( //Should run after rebuild
_scrollController.position.maxScrollExtent,
duration: const Duration(milliseconds: 300),
curve: Curves.easeInOut,
);
由于setState() 异步运行,maxScrollExtent 不会更新,这会导致只滚动到上一个项目。
如何为setState 做await。有没有办法做到这一点。我也不想打电话给Future.delayed。
这是我的完整代码DartPad。
谢谢。
【问题讨论】:
-
stackoverflow.com/questions/43370176/using-async-setstate
-
@Salma。该链接与 reactjs 相关 :(
-
SetState 是同步的,所以整个问题没有意义
-
@CrazyLazyCat 您应该在发送消息时使用此代码。就像在某个地方触发发送消息的事件一样。比如,发送按钮的侧 onTap