如何在Flutter中等待setState?

时间:2019-12-23 13:36:12

标签: flutter flutter-layout

我正在将项目动态添加到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不会被更新,这将导致滚动直到仅上一项。

如何为awaitsetState。无论如何要实现这一目标。我也不想打Future.delayed

这是我的完整代码DartPad

谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

  });