Dart 颤振-如何使网页浏览&;列表视图?
我正在尝试使用PageView、PageController和ListView制作一个旋转木马。但它抛出了这个例外 ══╡ 呈现库捕获到异常╞═════════════════════════════════════════════════════════ I/flatter(17678):在performResize()期间抛出了以下断言: I/颤振(17678):水平视口被赋予无限高。 I/Flatter(17678):视口在横轴上展开以填充其容器并约束其子对象以匹配 I/颤振(17678):它们在横轴上的范围。在本例中,为水平视口提供了无限量的 I/颤振(17678):要扩展的垂直空间 有人能帮我修一下吗 我想将这个旋转木马添加到充满背景图像、变换类和淡入淡出过渡的堆栈中Dart 颤振-如何使网页浏览&;列表视图?,dart,flutter,Dart,Flutter,我正在尝试使用PageView、PageController和ListView制作一个旋转木马。但它抛出了这个例外 ══╡ 呈现库捕获到异常╞═════════════════════════════════════════════════════════ I/flatter(17678):在performResize()期间抛出了以下断言: I/颤振(17678):水平视口被赋予无限高。 I/Flatter(17678):视口在横轴上展开以填充其容器并约束其子对象以匹配 I/颤振(17678)
@override
void initState() {
super.initState();
controller = PageController(
initialPage: 0,
keepPage: true,
);
@override
Widget build(BuildContext context) {
return AnimatedBuilder(
builder: (BuildContext context, Widget child) {
return Scaffold(
//BODY
body: ListView(children: <Widget>[
new Stack(
children: <Widget>[
new AspectRatio(...),
new Transform(...),
//THIS IS
new ListView.builder(
itemCount: 3,
scrollDirection: Axis.horizontal,
padding: EdgeInsets.symmetric(vertical: 16.0),
itemBuilder: (BuildContext context, int index) {
if (index % 3 == 0) {
return _buildCarousel(context, index ~/ 3);
} else {
return Divider();
}
},
),
}
}
}
Widget _buildCarousel(BuildContext context, int carouselIndex) {
return Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Text('Carousel $carouselIndex'),
SizedBox(
// you may want to use an aspect ratio here for tablet support
height: 200.0,
child: PageView.builder(
// store this controller in a State to save the carousel scroll position
controller: PageController(viewportFraction: 0.8),
itemBuilder: (BuildContext context, int itemIndex) {
return _buildCarouselItem(context, carouselIndex, itemIndex);
},
),
)
],
);
Widget _buildCarouselItem(
BuildContext context, int carouselIndex, int itemIndex) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 4.0),
child: Container(
decoration: BoxDecoration(
color: Colors.grey,
borderRadius: BorderRadius.all(Radius.circular(4.0)),
),
),
);
@覆盖
void initState(){
super.initState();
控制器=页面控制器(
初始页:0,
基帕奇:是的,
);
@凌驾
小部件构建(构建上下文){
返回动画生成器(
生成器:(BuildContext上下文,小部件子项){
返回脚手架(
//身体
正文:列表视图(子项:[
新堆栈(
儿童:[
新方面(…),
新变换(…),
//这是
新建ListView.builder(
物品计数:3,
滚动方向:轴水平,
填充:边缘组。对称(垂直:16.0),
itemBuilder:(构建上下文,int索引){
如果(索引%3==0){
返回_buildCarousel(上下文,索引~/3);
}否则{
返回分隔符();
}
},
),
}
}
}
Widget_buildCarousel(BuildContext上下文,int carouselIndex){
返回列(
mainAxisSize:mainAxisSize.min,
儿童:[
文本('Carousel$carouselIndex'),
大小盒子(
//您可能希望在此处使用纵横比来支持平板电脑
高度:200.0,
子项:PageView.builder(
//将此控制器存储在保存转盘滚动位置的状态
控制器:页面控制器(视口分数:0.8),
itemBuilder:(BuildContext上下文,int itemIndex){
返回_buildCarouselItem(上下文、carouselIndex、itemIndex);
},
),
)
],
);
Widget_buildCarouselItem(
BuildContext上下文、int carouselandex、int itemIndex){
返回填充(
填充:边缘组。对称(水平:4.0),
子:容器(
装饰:盒子装饰(
颜色:颜色。灰色,
borderRadius:borderRadius.all(半径.圆形(4.0)),
),
),
);
这是完整的代码正如您可能从错误中猜到的,基本上这意味着由于您没有指定有限的高度,
列表视图
将获得无限的高度。
尝试在ListView.builder
和ListView
中使用shrinkWrap:true
或者,您也可以尝试将列表视图
包装在高度有限的容器
或大小框
中
范例-
Container(
height: 200.0,
child: ListView(
/*Remaining Code*/
),
)
您可以尝试在ListView.builder上执行相同的操作。请共享一个工作代码,您的代码中存在许多格式问题…这是完整的代码