【发布时间】:2022-01-10 04:53:55
【问题描述】:
我正在使用颤振提供程序包进行状态管理。我的主屏幕正在侦听 ListView 中的子项添加。一切都很好。但是当从 ChangeNotifier 添加新项目时,我无法将列表视图滚动到底部。
我正在使用下面的代码滚动到底部,手动完成时它可以工作。但正如您所见,提供者模型正在发生变化,而列表视图在其他地方。如何在 ListView 的子项上滚动到底部?
final ScrollController _controller = ScrollController();
void _scrollDown() {
_controller.animateTo(
_controller.position.maxScrollExtent,
duration: const Duration(seconds: 1),
curve: Curves.fastOutSlowIn,
);
}
然后在 ListView 中
SingleChildScrollView(
controller: _controller,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: faqModel.getChatItems(),
),
)
【问题讨论】:
-
你在哪里调用
_scrollDown方法?以及在哪里添加列表视图项? -
是的,这就是问题所在。我无法调用 _scrollDown,因为项目是从提供程序模型中添加的。 _scrollDown 驻留在视图中。如何监听模型的变化?
-
那么什么时候将孩子添加到提供者模型中的列表中?