即使我总是可滚动,我的 Listview 也不会滚动
Posted
技术标签:
【中文标题】即使我总是可滚动,我的 Listview 也不会滚动【英文标题】:Flutter my Listview is not scrolling even I have alwayscrollable 【发布时间】:2021-01-01 22:46:54 【问题描述】:我真的不明白是什么导致了错误。
我的代码在一个带有返回 Widget 方法的单独类中,该方法返回一个包含我的 Listview 的 Stack。
注意:当我使用 Listview 复制 Container 并修改了相应的值时;然后再次粘贴到一个以 A Stack 为父项的新项目中,它似乎工作正常。
代码如下:
AddStockUI()
Widget getAddStockUI()
final mediaSize = MediaQuery.of(context).size;
return Container(
width: mediaSize.width,
height: mediaSize.height,
color: Colors.white,
child: Stack(
children: <Widget>[
//Head - image
Container(
width: mediaSize.width * .8,
height: mediaSize.height * .2,
margin: EdgeInsets.only(
left: mediaSize.width * .1,
right: mediaSize.width * .1,
top: mediaSize.height * .05,
),
child: Row(
children: <Widget>[
Container(
width: mediaSize.width * .37,
height: mediaSize.height * .2,
child: Image.asset(
'assets/images/image_add_image.png',
width: mediaSize.width * .37,
height: mediaSize.height * .2,
filterQuality: FilterQuality.high,
fit: BoxFit.fill,
),
),
Spacer(),
Container(
constraints: BoxConstraints(
maxHeight: mediaSize.height * .2,
maxWidth: mediaSize.width * .37),
padding: EdgeInsets.all(0),
child: ListView.builder(
padding: EdgeInsets.all(0),
physics: AlwaysScrollableScrollPhysics(),
itemCount: myMapDesc.keys.length + 1,
itemBuilder: (BuildContext ctx, int index)
if (index == 0)
return Container(
width: mediaSize.width * .35,
height: mediaSize.height * .03,
child: Row(
children: <Widget>[
Center(
child: Container(
width: mediaSize.width * .14,
child: AutoSizeText(
"variation",
style: TextStyle(color: myLightDarkColor),
maxFontSize: 14,
minFontSize: 12,
maxLines: 1,
),
)),
Spacer(),
Center(
child: Container(
width: mediaSize.width * .1,
child: AutoSizeText(
"value",
style: TextStyle(color: myLightDarkColor),
maxFontSize: 14,
minFontSize: 12,
maxLines: 1,
),
)),
Spacer(),
Container(width: mediaSize.width * .11)
],
),
);
else
return Container(
margin:
EdgeInsets.only(top: mediaSize.height * .025),
width: mediaSize.width * .35,
height: mediaSize.height * .03,
child: Row(
children: <Widget>[
Center(
child: Container(
width: mediaSize.width * .1,
child: AutoSizeText(
myMapDesc.keys
.toList()[index - 1]
.toString(),
style: TextStyle(color: myLightDarkColor),
maxFontSize: 14,
minFontSize: 12,
maxLines: 1,
),
)),
Spacer(),
Center(
child: Container(
width: mediaSize.width * .1,
child: AutoSizeText(
myMapDesc.values
.toList()[index - 1]
.toString(),
style: TextStyle(color: myLightDarkColor),
maxFontSize: 14,
minFontSize: 12,
maxLines: 1,
),
)),
Spacer(),
Icon(
Icons.remove_circle,
color: Colors.red,
)
],
),
);
))
],
),
),
【问题讨论】:
【参考方案1】:尝试用 SingleChildScrollView 包装您的 ListView
【讨论】:
如何包装父小部件? 第一个容器?? 最后一次尝试.. 用SingleChildScrollView
包装你的Stack()
小部件,如果这不起作用,我很抱歉我没有想法...... :(以上是关于即使我总是可滚动,我的 Listview 也不会滚动的主要内容,如果未能解决你的问题,请参考以下文章
Android View 不会通过滑动手势滚动,也不会滚动。将 ListView 与 ArrayAdapter 一起使用
无法在标准 ListView 小部件上滚动;总是过度渲染 150px
即使收到更新的数据,Flutter ListView.builder 的 UI 也不会被 getx 更新
如何在颤动中使我的文本与 listview.builder 一起滚动