问题描述
我不明白是什么导致了错误。
我的代码在一个单独的类中,带有返回的Widget方法,该方法返回一个堆栈,该堆栈封装了我的Listview。
注意:当我使用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,child: Image.asset(
'assets/images/image_add_image.png',width: mediaSize.width * .37,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,)),Center(
child: Container(
width: mediaSize.width * .1,child: AutoSizeText(
"value",Container(width: mediaSize.width * .11)
],);
} else {
return Container(
margin:
EdgeInsets.only(top: mediaSize.height * .025),width: mediaSize.width * .35,child: Row(
children: <Widget>[
Center(
child: Container(
width: mediaSize.width * .1,child: AutoSizeText(
myMapDesc.keys
.toList()[index - 1]
.toString(),child: AutoSizeText(
myMapDesc.values
.toList()[index - 1]
.toString(),Icon(
Icons.remove_circle,color: Colors.red,)
],);
}
}))
],}
}
解决方法
尝试使用SingleChildScrollView包装您的ListView