13 | 经典控件(二):UITableView/ListView在Flutter中是什么?
该思维导图由 AI 生成,仅供参考
ListView
- 深入了解
- 翻译
- 解释
- 总结
Flutter中的视图元素排列布局是通过ListView和CustomScrollView控件实现的。ListView可沿垂直或水平方向排列子Widget,适用于展示一组连续视图元素的场景。文章详细介绍了ListView的构造函数、builder构造函数以及设置分割线的方法,并提供了示例代码和效果展示。此外,文章还介绍了CustomScrollView控件,用于处理多个需要自定义滚动效果的Widget,通过一个滚动视差的例子演示了其使用方法。另外,文章还介绍了ScrollController和NotificationListener的使用方法,分别用于监听ListView的滚动信息和获取滚动事件通知。总的来说,本文通过实际示例和效果展示,帮助读者快速了解了Flutter中视图元素排列布局的实现方法,以及如何实现滚动信息的监听和控制。
《Flutter 核心技术与实战》,新⼈⾸单¥59
全部留言(42)
- 最新
- 精选
- 大土豆我想问的最关键的一点是,flutter的列表有重用的概念吗?1000条数据,是会渲染出1000个视图对象还是像Androd或者iOS原生的那样重用机制,就渲染屏幕当中的的视图对象
作者回复: 后者
2019-07-27311 - arronK1. cacheExtent 2. notification.metrics
作者回复: 赞👍
2019-12-126 - 季末灬离殇double offsetY = scrollNotification.metrics.pixels; 滚动过程中通过偏移量更改isTop即可。
作者回复: 赞
2019-07-2756 - NASA希望每节能配有小demo,毕竟每个人水平都不同
作者回复: 更新了github链接
2019-07-3024 - 有妖气老师,NestedScrollView中body是一个customScrollview。这个customScrollview中包含一个listview,那么怎么知道listview已经滑动到了底部,目前想在内部的listview中做一个上拉刷新的操作。
作者回复: 通过NotificationListener的metrics: NotificationListener<ScrollNotification>( onNotification: (ScrollNotification scrollInfo) { if (scrollInfo.metrics.pixels == scrollInfo.metrics.maxScrollExtent) { loadMore(); } }, child: ListView.builder( // ... ), ),
2019-09-083 - 许童童老师你好,CustomScrollView 的sliver还是不是特别理解,可以再给点参考资料吗?
作者回复: 可以看看这个https://medium.com/@greg.perry/decode-customscrollview-d5a60fcfb9fb
2019-07-2742 - 狗子不要喝奶茶课后小作业的预加载:是否使用cacheExtent呢
作者回复: 赞
2019-10-291 - 咖啡凉了_controller.addListener(() {// 为控制器注册滚动监听方法 if(_controller.offset > 1000) {// 如果 ListView 已经向下滚动了 1000,则启用 Top 按钮 setState(() {isToTop = true;}); } else if(_controller.offset < 300) {// 如果 ListView 向下滚动距离不足 300,则禁用 Top 按钮 setState(() {isToTop = false;}); } }); 这里的setstate在滚动中会一直重复调用吧,会不会影响性能呢
作者回复: 是会重复调用,因为Element与Renderboject会复用,所以整体渲染性能不受影响。但Widget确实会频繁重建,可以考虑在外层做一个简单判断,不重复设置。
2019-09-021 - Dominic有没有完整的代码放github上,后端程序表示片段代码,运行不起来
作者回复: 更新了github链接
2019-07-3121 - 杨闯你好,我们现在需要在debug的时候引用一些库,而在release的时候不引用一些库,而这个库使用了fmdb,因此有以下两个问题 1、在dart代码中,如何通过判断来决定要不要将import这个库和使用这个库的相关方法,而现在不能完成编译。 2、如果将这个库放到dev_dependencies里面,在编译release的时候,这个库没有被引入进来,但是fmdb被引入进来了,怎么避免fmdb给引用进来,是哪里出现问题了吗,还是哪里需要进行特别的设置
作者回复: 1.试试assert 2.你可以把这个库的所有依赖都完全展开,放到dev_dependencies中
2019-07-2921