我试图创建一个ListView,它可以自动滚动到最新的数据点。我尝试通过创建一个使用.jumpTo方法的_scrollToBottom函数来实现这一点。
但是我在应用程序中得到一个空白屏幕,在调试控制台中得到'child.parentData != null': is not true.
。
有什么建议可以实现自动滚动吗?
下面是我当前代码的相关部分:
ScrollController _scrollController = ScrollController();
_scrollToBottom(){ _scrollController.jumpTo(_scrollController.position.maxScrollExtent);
}
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: DataShareWidget.of(context).stream,
builder: (BuildContext context, AsyncSnapshot snapshot){
if(snapshot.hasError){ return Text(snapshot.error);}
if(snapshot.hasData){
_dataFormat(snapshot.data);
return ListView.builder(
itemCount: _listViewData.length,
controller: _scrollController,
reverse: true,
shrinkWrap: true,
itemBuilder: (context, index) {
_scrollToBottom();
return ListTile(
title: AutoSizeText(_listViewData[index], maxLines: 2),
dense: true,
);
},
);
}
}
);
}
4条答案
按热度按时间gajydyqb1#
你需要做的是在列表构建完成后调用
_scrollToBottom()
方法。修改是你的代码(没有StreamBuilder):
44u64gxh2#
你需要这样做,并完美地工作。。。
roejwanj3#
问题出在你的StreamBuilder代码中。如果快照还没有准备好,你需要返回一些东西。试试下面的代码:
yhqotfr84#
在flutter
3.7+
中,可以使用以下代码轻松完成。