flutter – Listview滚动到小部件

flutter – Listview滚动到小部件,第1张

概述如何滚动到列表视图中的特殊小部件? 例如,如果我按下特定按钮,我想自动滚动到ListView中的某个Container. new ListView(children: <Widget>[ new Container(...), new Container(...), #scroll for example to this container 如何滚动到列表视图中的特殊小部件?
例如,如果我按下特定按钮,我想自动滚动到ListVIEw中的某个Container.

@H_419_9@

@H_419_9@

new ListVIEw(children: <Widget>[             new Container(...),new Container(...),#scroll for example to this container              new Container(...)      ]);
解决方法 到目前为止,最简单的解决方案是使用Scrollable.ensureVisible(context).因为它可以为您完成所有工作并使用任何小部件大小.使用GlobalKey获取上下文.

@H_419_9@

问题是ListVIEw不会呈现不可见的项目.这意味着您的目标很可能根本不会被构建.这意味着你的目标没有上下文;在没有更多工作的情况下阻止您使用该方法.@H_419_9@

最后,最简单的解决方案是通过SingleChilScrollVIEw替换ListVIEw并将子项包装到Column中.示例:@H_419_9@

@H_419_9@

class ScrollVIEw extends StatelessWidget {  final dataKey = new GlobalKey();  @overrIDe  Widget build(BuildContext context) {    return new Scaffold(      primary: true,appbar: new Appbar(        Title: const Text('Home'),),body: new SingleChildScrollVIEw(        child: new Column(          children: <Widget>[            new SizedBox(height: 160.0,wIDth: double.infinity,child: new Card()),new SizedBox(height: 160.0,// destination            new Card(              key: dataKey,child: new Text("data\n\n\n\n\n\ndata"),)          ],bottomNavigationbar: new Raisedbutton(        onpressed: () => Scrollable.ensureVisible(dataKey.currentContext),child: new Text("Scroll to data"),);  }}

注意:虽然这允许轻松滚动到所需的项目,但请考虑此方法仅适用于小的预定义列表.至于更大的列表,你会遇到性能问题.@H_419_9@

但是可以使Scrollable.ensureVisible与ListVIEw一起工作;虽然这需要更多的工作.@H_419_9@ 总结

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

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

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

原文地址: http://outofmemory.cn/web/1000528.html

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

发表评论

登录后才能评论

评论列表(0条)

保存