以子組件的高度,作為listview的高度。
優(yōu)雅解決,性能也沒有問題。
整理來源:B站:王叔不禿 的視頻。
思路很強(qiáng),做個(gè)記錄。
注:Column雖然不可滑動(dòng),但在繪制中是假定高度無限大的。
Column(
children: [
Stack(
children: [
const IgnorePointer(//為了防止TestWidget有點(diǎn)擊事件
child: Opacity(opacity: 0.0, child: TestWidget()),//渲染步驟:布局、繪制、合成,當(dāng)opacity: 0.0時(shí),不會(huì)走,繪制、合成。即不用擔(dān)心性能問題。
),
const SizedBox(
width: double.infinity,//并不是無限大,跟你布局的約束有關(guān)
),
Positioned.fill(//占滿布局(要去了解stack布局原理,當(dāng)有stack中有非Positioned包裹的組件時(shí),會(huì)用該組件的大?。? child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: 1000,
itemBuilder: (_, index) {
return const TestWidget();
}))
],
)
],
)