如何在Flutter中等待setState? [重复]

问题描述 投票:0回答:1

我正在将项目动态添加到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

谢谢。

flutter flutter-layout
1个回答
0
投票

您可以在构建方法的第一行尝试使用此方法。

         WidgetsBinding.instance.addPostFrameCallback((_) {
                  if (_scrollController.hasClients) {
                    _scrollController.animateTo( 
      _scrollController.position.maxScrollExtent,
      duration: const Duration(milliseconds: 300),
      curve: Curves.easeInOut,
    );
  }

  });
© www.soinside.com 2019 - 2024. All rights reserved.