[英]ListView.builder doesn't work in alertDialog
我使用 ListView.builder 来显示图像。 当我在主页中显示它时它是有效的,但是当我在 alertDialog 中使用它时它根本不起作用。 这是我的 alertDialog 代码。
void rateVideo(BuildContext context){
var alertDialog = AlertDialog(
title: Text("video rate"),
content: RateClip(),
actions: <Widget>[
FlatButton(
child: Text('ok'),
onPressed: () {
//rateVideo(context);
Navigator.of(context).pop();
}),
],
);
showDialog(context: context,
builder: (BuildContext context){
return alertDialog;
}
);
}
这段代码是关于我尝试显示图像的 ListView.builder
class RateClip extends StatelessWidget {
//const ActivityClip ({Key key}) : super(key: key);
final List<String> pic = [
'assets/images/LG5.png',
'assets/images/stress.png',
'assets/images/stress.png',
'assets/images/normal.png',
'assets/images/happy.png'
];
@override
Widget build(BuildContext context) {
return Container(
height: 60,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: pic.length,
itemBuilder: (context, index) {
return Container(
width: 30,
child: ListView(
scrollDirection: Axis.horizontal,
children: <Widget>[
InkWell(
onTap: () {
},
child: Image.asset(pic[index].toString(), height: 30, width: 30),
)]));
}));
}
}
这是我的新代码
class RateClip extends StatelessWidget {
//const ActivityClip ({Key key}) : super(key: key);
final List<String> pic = [
'assets/images/LG5.png',
'assets/images/stress.png',
'assets/images/stress.png',
'assets/images/normal.png',
'assets/images/happy.png'
];
@override
Widget build(BuildContext context) {
return Container(
//margin: const EdgeInsets.only(right: 10, left: 10, top: 200),
height: 60,
//width: 40,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: pic.length,
itemBuilder: (context, index) {
return InkWell(
onTap: () {
},
child: Image.asset(pic[index].toString(), height: 30, width: 30),
);
}));
}
}
从错误中可以看出,它是警报对话框的断言错误。 警告对话框中的元素必须是特定的宽度,您可以在日志中看到。 它根据设备而变化。
因此,要解决您的错误,您必须提供容器的特定宽度,它位于列表视图上方。 更具体地说,这是因为您的列表视图是水平的并将宽度设置为无穷大,这就是它抛出断言错误的原因。 如果是垂直列表视图,那么您必须提供容器的高度。
@override
Widget build(BuildContext context) {
return Container(
width: MediaQuery.of(context).size.width*0.75 // here i set width of container to 75% of screen
child: ListView.builder(
scrollDirection: Axis.horizontal,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.