我正在将项目动态添加到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
不会被更新,这将导致滚动直到仅上一项。
如何为await
做setState
。无论如何要实现这一目标。我也不想打Future.delayed
。
这是我的完整代码DartPad。
谢谢。
答案 0 :(得分:0)
您可以在构建方法的第一行尝试使用此方法。
WidgetsBinding.instance.addPostFrameCallback((_) {
if (_scrollController.hasClients) {
_scrollController.animateTo(
_scrollController.position.maxScrollExtent,
duration: const Duration(milliseconds: 300),
curve: Curves.easeInOut,
);
}
});