[英]Horizontal ListView.builder inside a Vertical ScrollView in Flutter
我想做的事,
(在下面我是如何尝试的)
我的尝试:
Scaffold(
body: StreamBuilder(
stream: FirebaseFirestore.instance
.collection("posts")
.orderBy('datePublished', descending: true)
.snapshots(),
builder: (context,
AsyncSnapshot<QuerySnapshot<Map<String, dynamic>>> snapshot) {
//connection no problem
return SingleChildScrollView(
child: Column(
children: [
Expanded(
child: ListView.builder(
shrinkWrap: true,
scrollDirection: Axis.horizontal,
itemCount: 5,
itemBuilder: (context, index) => Container(
padding: const EdgeInsets.all(12),
margin: const EdgeInsets.all(12),
height: 100,
width: 150,
color: Colors.pink,
),
),
),
Expanded(
child: ListView.builder(
itemCount: snapshot.data!.docs.length,
itemBuilder: (context, index) => PostCard(
snap: snapshot.data!.docs[index].data(),
),
),
),
],
),
);
},
));
它没有用。 显示此错误:
════════渲染库捕获异常═══════════════════════════════RenderBox was not layed═输出:RenderRepaintBoundary#aa89e relayoutBoundary=up1 NEEDS-PAINT 'package:flutter/src/rendering/box.dart': package:flutter/…/rendering/box.dart:1 断言失败:第 2001 行 pos 12:'hasSize'
导致错误的相关小部件是 Scaffold
您不能在用SingleChildScrollView
包裹的column
中调用Expanded
,试试这个:
SingleChildScrollView(
child: Column(
children: [
SizedBox(
height: 100 + 12 + 12,
child: ListView.builder(
shrinkWrap: true,
scrollDirection: Axis.horizontal,
itemCount: 5,
itemBuilder: (context, index) => Container(
padding: const EdgeInsets.all(12),
margin: const EdgeInsets.all(12),
height: 100,
width: 150,
color: Colors.pink,
),
),
),
ListView.builder(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: snapshot.data!.docs.length,
itemBuilder: (context, index) => PostCard(
snap: snapshot.data!.docs[index].data(),
),
),
],
),
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.