【发布时间】:2023-03-29 14:55:01
【问题描述】:
我正在尝试构建一个垂直列表,其中每个项目都是图像水平列表。
图像大小在图像小部件中设置,但如果我没有设置具有高度值的外部容器,则会出现黑屏。
我的问题是,如何设置 Widget 高度来包装子小部件,这样我就不需要设置外部容器高度?
这是我的代码:
return ListView.builder( //External vertical list
padding: EdgeInsets.all(2),
itemCount: snapshot.data.length,
physics: ScrollPhysics(),
scrollDirection: Axis.vertical,
itemBuilder: (context, outerIndex) {
print(
"Outer ListView.builder: building item $outerIndex of ${snapshot.data.length} items");
return Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Container(
padding: EdgeInsets.all(5.0),
height: 300, //When I remove Container and height value, I get black screen
child: ListView.builder( //Internal horizontal list
itemCount: snapshot.data[outerIndex].items.length,
scrollDirection: Axis.horizontal,
shrinkWrap: true,
itemBuilder: (context, mediaIndex) {
print("Inner ListView.builder: mediaItem $mediaIndex");
return Container(
padding: EdgeInsets.symmetric(horizontal: 5),
child: FadeInImage.memoryNetwork(
height: 300,
width: 160,
placeholder: kTransparentImage,
image: TmdbService.buildImageUrl(snapshot.data[outerIndex].items[mediaIndex].poster_path),
fit: BoxFit.fill,
),
);
}),
),
],
);
},
);
}
},
);
【问题讨论】:
-
SizedBox (docs.flutter.io/flutter/widgets/SizedBox-class.html) 是否适合您?也值得一看 FittedBox
-
我应该将 FittedBox 放在层次结构中的什么位置? SizedBox 也需要高度值吗?