在flutter应用程序中有两个水平列表视图。当放置第二个列表视图时出现错误。 我使用nestedscrollview来滚动页面,但是这个问题没有解决。如何管理小部件的高度,以便不会发生此错误?我尝试为第二个listview设置高度,但仍然出错 看我的代码:
@override
Widget build(BuildContext context) {
return new MaterialApp(
theme: ThemeData(
fontFamily: "Vazir",
primaryColor: Colors.red,
accentColor: Colors.green,
),
debugShowCheckedModeBanner: false,
home: Directionality(
textDirection: TextDirection.rtl,
child: Scaffold(
drawer: myDrawerLayout(context),
body: NestedScrollView(
headerSliverBuilder: (context, bool innerScroll) {
return <Widget>[
SliverAppBar(
title: Text(
"فروشگاه",
style: TextStyle(fontFamily: "Vazir"),
))
];
},
body: Column(
children: <Widget>[
_imageSlider(),
_explanationTextForAmazingProduct(),//text for listview explanation
_SizedBox(
height: 190,
child: ListView.builder(
scrollDirection: Axis.horizontal,
padding: EdgeInsets.all(8),
shrinkWrap: true,
itemCount: productList.length,
itemBuilder: (BuildContext context, int index) {
return productList.isEmpty || productList == null
? wiatingView()
: Card(
child: Container(
width: 200,
height: 70,
child: Column(
children: <Widget>[
Padding(
padding:
const EdgeInsets.only(top: 8),
child: Container(
width: 80,
height: 80,
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage(
productList[index]
.getImage()))),
),
),
Padding(
padding: const EdgeInsets.only(
right: 8, left: 8, top: 8),
child: Center(
child: Text(productList[index]
.getTitle()),
),
),
Center(
child: Text(
productList[index].getPrice(),
style: TextStyle(
color: Colors.green),
),
),
],
),
),
);
}),
),
explanationTextForMostSellProduct(),//text for second listview explanation
Expanded(
child: ListView.builder(
scrollDirection: Axis.horizontal,
padding: EdgeInsets.all(8),
shrinkWrap: true,
itemCount: productList.length,
itemBuilder: (BuildContext context, int index) {
return productList.isEmpty || productList == null
? wiatingView()
: Card(
child: Container(
width: 200,
height: 150,
child: Column(
children: <Widget>[
Padding(
padding:
const EdgeInsets.only(top: 8),
child: Container(
width: 80,
height: 80,
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage(
productList[index]
.getImage()))),
),
),
Padding(
padding: const EdgeInsets.only(
right: 8, left: 8, top: 8),
child: Center(
child: Text(productList[index]
.getTitle()),
),
),
Center(
child: Text(
productList[index].getPrice(),
style: TextStyle(
color: Colors.green),
),
),
],
),
),
);
}),
)
],
),
)),
));
}
答案 0 :(得分:0)
您应该使用高度:190而不是第一个ListView.builder覆盖第二个ListView.builder SizedBox,因为ListView.builder小部件具有无限的高度,因此您应该覆盖特定的高度。
示例:
SizedBox(
height: 190,
child: ListView.builder(....