以子组件的高度,作为listview的高度。
优雅解决,性能也没有问题。
整理来源:B站:王叔不秃 的视频。
思路很强,做个记录。
注:Column虽然不可滑动,但在绘制中是假定高度无限大的。
Column(
children: [
Stack(
children: [
const IgnorePointer(//为了防止TestWidget有点击事件
child: Opacity(opacity: 0.0, child: TestWidget()),//渲染步骤:布局、绘制、合成,当opacity: 0.0时,不会走,绘制、合成。即不用担心性能问题。
),
const SizedBox(
width: double.infinity,//并不是无限大,跟你布局的约束有关
),
Positioned.fill(//占满布局(要去了解stack布局原理,当有stack中有非Positioned包裹的组件时,会用该组件的大小)
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: 1000,
itemBuilder: (_, index) {
return const TestWidget();
}))
],
)
],
)