如何在ListView中优雅的嵌套ListView

前言 日常的开发工作中,经常会遇到列表中嵌套ListView的需求。具体情况也分为两种。 1.竖向ListView嵌套横向ListView 常见的需求:竖向ListView行数不限制,横向ListView的列数不限制。具体情况如下图。 代码如下: L i s t V i e w ( c ] h , i T S ) l e t , d x a c ] r t c h , e ( k i I ) S P ) n ' ( l g , i o , : L d n c ) z s c ) i r o h , e i h , [ s e r i o c d t i s i t n e l p h B i l c t V : P d a i o o d r e i o : c l x n : o m e [ i i d ( e l B w n O t : w d L l u ' t p y i . i D i ) e a : I d f s i l , r c t t i t r d ( i 0 e h l V e e t . m : l i c r y 0 ( ( e t : ( , ) d w i , o . o u b n _ b u : , l i e l A i . d x n i e i d n r s e f ( . x i h ) n o i r = t i > y z ) o I , n t t e a m l ( , ) , Stack存在无Positioned包裹的子组件,决定Stack尺寸的是无位置的组件中的最大的尺寸,Positioned不会影响Stack的尺寸。(当然如果子类全部是Positioned包裹的子组件,Stack会将自身尺寸设置为父级布局约束所允许的最大尺寸,为对齐子组件创造条件。)。 此处用Positioned.fill,让ListView尽量占满整个Stack。 接下来设置宽度,利用SizedBox的向下传递约束,向上传递尺寸的特性。用SizedBox(width: double.infinity)把宽度撑开到整个屏幕的宽度。 接下来算出Item的高度,用Item的高度撑开Stack的高度。 此处用Item的初衷只是为了定制高度,不能让Item显示在屏幕上,所以用Opacity隐藏Item,为了忽略掉事件响应,最后用上IgnorePointer。 ...

2021-07-06 · 3 min · 531 words · CubeGao