flutter – 以编程方式滚动到ListView的末尾

flutter – 以编程方式滚动到ListView的末尾,第1张

概述我有一个可滚动的ListView,其中项目的数量可以动态更改.每当将新项添加到列表的末尾时,我想以编程方式将ListView滚动到最后. (例如,聊天消息列表,其中可以在最后添加新消息) 我的猜测是我需要在State对象中创建一个ScrollController并将其手动传递给ListView构造函数,以便稍后我可以在控制器上调用animateTo()/ jumpTo()方法.但是,由于我无法轻易 我有一个可滚动的ListVIEw,其中项目的数量可以动态更改.每当将新项添加到列表的末尾时,我想以编程方式将ListVIEw滚动到最后. (例如,聊天消息列表,其中可以在最后添加新消息)

我的猜测是我需要在State对象中创建一个ScrollController并将其手动传递给ListVIEw构造函数,以便稍后我可以在控制器上调用animateto()/ jumpTo()方法.但是,由于我无法轻易确定最大滚动偏移量,因此似乎不可能简单地执行scrollToEnd()类型的 *** 作(而我可以轻松地传递0.0以使其滚动到初始位置).

有没有一种简单的方法来实现这一目标?

使用reverse:true对我来说不是一个完美的解决方案,因为当ListVIEw视口中只有少量项目时,我希望项目在顶部对齐.

解决方法 如果你使用一个收缩包装的ListVIEw with reverse:true,将它滚动到0.0将完成你想要的.

import 'dart:collection';import 'package:Flutter/material.dart';voID main() {  runApp(new MyApp());}class MyApp extends StatelessWidget {  @overrIDe  Widget build(BuildContext context) {    return new MaterialApp(      Title: 'Example',home: new MyHomePage(),);  }}class MyHomePage extends StatefulWidget {  @overrIDe  _MyHomePageState createState() => new _MyHomePageState();}class _MyHomePageState extends State<MyHomePage> {  List<Widget> _messages = <Widget>[new Text('hello'),new Text('world')];  ScrollController _scrollController = new ScrollController();  @overrIDe  Widget build(BuildContext context) {    return new Scaffold(      body: new Center(        child: new Container(          decoration: new Boxdecoration(backgroundcolor: colors.blueGrey.shade100),wIDth: 100.0,height: 100.0,child: new Column(            children: [              new Flexible(                child: new ListVIEw(                  controller: _scrollController,reverse: true,shrinkWrap: true,children: new UnmodifiableListVIEw(_messages),),],floatingActionbutton: new floatingActionbutton(        child: new Icon(Icons.add),onpressed: () {          setState(() {            _messages.insert(0,new Text("message ${_messages.length}"));          });          _scrollController.animateto(            0.0,curve: Curves.eaSEOut,duration: const Duration(milliseconds: 300),);        }      ),);  }}
总结

以上是内存溢出为你收集整理的flutter – 以编程方式滚动到ListView的末尾全部内容,希望文章能够帮你解决flutter – 以编程方式滚动到ListView的末尾所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1004070.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存