Listview 如何在Flatter中将列表视图滚动到底部
我有一个包含列表视图生成器的颤振应用程序 聊天页面Listview 如何在Flatter中将列表视图滚动到底部,listview,flutter,dart,scroll,chat,Listview,Flutter,Dart,Scroll,Chat,我有一个包含列表视图生成器的颤振应用程序 聊天页面 我需要将页面滚动到页面末尾,直到最后一条消息?您需要创建一个scrollController并将其传递到ListView,然后运行如下代码: class SampleList extends StatefulWidget { @override _SampleListState createState() => _SampleListState(); } class _SampleListState extends State&
我需要将页面滚动到页面末尾,直到最后一条消息?您需要创建一个scrollController并将其传递到ListView,然后运行如下代码:
class SampleList extends StatefulWidget {
@override
_SampleListState createState() => _SampleListState();
}
class _SampleListState extends State<SampleList> {
ScrollController _scrollController;
@override
Widget build(BuildContext context) {
return ListView.builder(
controller: _scrollController,
itemBuilder: (_, index) => ListTile(
title: Text(
index.toString(),
),
),
);
}
void scrollToBottom() {
final bottomOffset = _scrollController.position.maxScrollExtent;
_scrollController.animateTo(
bottomOffset,
duration: Duration(milliseconds: 1000),
curve: Curves.easeInOut,
);
}
@override
void initState() {
_scrollController = ScrollController();
super.initState();
}
@override
void dispose() {
_scrollController.dispose();
super.dispose();
}
}
您需要创建一个scrollController并将其传递给ListView,然后运行如下代码:
class SampleList extends StatefulWidget {
@override
_SampleListState createState() => _SampleListState();
}
class _SampleListState extends State<SampleList> {
ScrollController _scrollController;
@override
Widget build(BuildContext context) {
return ListView.builder(
controller: _scrollController,
itemBuilder: (_, index) => ListTile(
title: Text(
index.toString(),
),
),
);
}
void scrollToBottom() {
final bottomOffset = _scrollController.position.maxScrollExtent;
_scrollController.animateTo(
bottomOffset,
duration: Duration(milliseconds: 1000),
curve: Curves.easeInOut,
);
}
@override
void initState() {
_scrollController = ScrollController();
super.initState();
}
@override
void dispose() {
_scrollController.dispose();
super.dispose();
}
}
将reverse:true设置为ListView小部件将在底部显示最新的元素。有了它,您可以轻松地实现聊天时间表
ListView.builder(
reverse: true,
itemBuilder: (context, index) => _chatCell(),
)
将reverse:true设置为ListView小部件将在底部显示最新的元素。有了它,您可以轻松地实现聊天时间表
ListView.builder(
reverse: true,
itemBuilder: (context, index) => _chatCell(),
)
在initState方法中初始化ScrollController类的对象 记住:-1调用super.initState;在initState方法的顶部。 2 ListView应与滚动控制器的对象连接 WidgetsBinding.instance.addPostFrameCallback\u{ scrollController.jumpToscrollController.position.maxScrollExtent; };
然后,在构建方法的顶部添加上述代码。它将自动滚动到消息列表视图的底部。在initState方法中初始化ScrollController类的对象 记住:-1调用super.initState;在initState方法的顶部。 2 ListView应与滚动控制器的对象连接 WidgetsBinding.instance.addPostFrameCallback\u{ scrollController.jumpToscrollController.position.maxScrollExtent; };
然后,在构建方法的顶部添加上述代码。它将自动滚动到消息列表视图的底部。呼叫的位置scrollToBottom@Husamuldeen这取决于你。无论何时加载新消息或任何对您有意义的内容,您都可以调用它screen@Husamuldeen你必须在小部件布置好之后调用这个方法。请为我解释一下,怎么做,在哪里调用scrollToBottom@Husamuldeen这取决于你。无论何时加载新消息或任何对您有意义的内容,您都可以调用它screen@Husamuldeen你必须在小部件布置好之后调用这个方法。请为我解释一下,怎么做这回答了你的问题吗?这回答了你的问题吗?我不想反转它,我想向下滚动它,在它工作之前的答案当我使用timer I initState时,我需要对每一条新消息都这样做。@Husamuldeen你真的尝试过这个吗?它实际上就像一个符咒。我不想反转它,我想向下滚动它,在它工作之前的答案。当我使用计时器时,我需要初始化状态,我需要对每一条新消息都这样做。@Husamuldeen你真的尝试过这个吗?它实际上就像一个符咒。