我正在尝试在还包含静态图像的容器内创建可滚动的listview。但是,列表视图似乎无法滚动,并且在我的应用程序上出现“ x像素底部溢出”的假象。
static List<Widget> getClubs() {
var myClubs = new List<Widget>();
for (var i = 0; i < 10; i++) {
myClubs.add(new Padding(
padding: EdgeInsets.all(8.0),
child: new CircleAvatar(
backgroundImage:
new NetworkImage("https://i.imgur.com/p2oUDLD.png"),
backgroundColor: Colors.black,
radius: 34.0,
)));
}
return myClubs;
}
final leftSection = new Container(
color: Color(0xFF212121),
width: 100,
child: Column(
children: <Widget>[
SizedBox(height: 20.0),
new Image.asset(
'assets/logo.png',
alignment: Alignment.center,
),
SizedBox(height: 10.0),
new Container(
child: new ListView(
shrinkWrap: true,
padding: const EdgeInsets.all(5.0),
children: getClubs(),
))
],
));
答案 0 :(得分:1)
我还推荐 Wrap
给遇到列表视图中容器大小错误导致溢出的问题的任何人:
new Container(
alignment: Alignment.center,
child: Wrap( //the magic
children: [
new Container(),
],
),
),
答案 1 :(得分:0)
您可以使用Expanded小部件或设置容器的高度。
答案 2 :(得分:0)
有时确定估计高度的最佳方法是使用 sizedbox
int heightToBeReduced = 380;
SizedBox(
height: MediaQuery.of(context).size.height - heightToBeReduced,
child: ListView....
)
答案 3 :(得分:0)
我在一行中使用了 Flexible 来控制列表视图构建器的输出
定义 scollController
final _scrollController = ScrollController();
定义 ListView 构建器
ListView builder = ListView.builder(
itemCount: listPerformance?.length,
shrinkWrap: true,
itemBuilder: (context, index) {
return PerformanceCardWidget(performanceView: listPerformance[index]);
});
定义一个灵活的输出列表视图构建器内容
Row(crossAxisAlignment: CrossAxisAlignment.start, children: [
Flexible(
flex: 6,
fit: FlexFit.loose,
child: Scrollbar(
isAlwaysShown: true,
controller: _scrollController,
child: SingleChildScrollView(
controller: _scrollController, child: builder))
)
])
答案 4 :(得分:-1)
将 Column 包裹在一个 Expanded 小部件中:
Expanded(
child: Column(
),
),
另一种方法是将 Column 包装在一个灵活的小部件中并指定一个弹性系数。
Flexible(
flex: 1,
child: Column(
children: [
],
),
),