Android 当前在颤振中使用列表的方式,可通过扩展或flex滚动
我的屏幕不可滚动,并且具有限制高度(仅可在限制高度中滚动) 我想让我的页面可以滚动, 这是我的当前页面: 如果你在上面的gif中看到,我的页面是不可滚动的,只能在一个框中滚动,我非常喜欢在所有页面上正常滚动,我应该在这里使用ListView吗??但是我怎样才能让图片和文字像上面那样响应呢?但是我确实把文本的高度也弄得太近了,我能知道你怎么把列表上的文本也缩小了吗 这是我的小部件代码Android 当前在颤振中使用列表的方式,可通过扩展或flex滚动,android,ios,flutter,flutter-layout,Android,Ios,Flutter,Flutter Layout,我的屏幕不可滚动,并且具有限制高度(仅可在限制高度中滚动) 我想让我的页面可以滚动, 这是我的当前页面: 如果你在上面的gif中看到,我的页面是不可滚动的,只能在一个框中滚动,我非常喜欢在所有页面上正常滚动,我应该在这里使用ListView吗??但是我怎样才能让图片和文字像上面那样响应呢?但是我确实把文本的高度也弄得太近了,我能知道你怎么把列表上的文本也缩小了吗 这是我的小部件代码 Widget build(BuildContext context) { return Scaffold
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
data['title'],
softWrap: true,
),
),
body: Container(
padding: EdgeInsets.all(MediaQuery.of(context).size.width * 0.05),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
Expanded(
flex: 1,
child: Align(
alignment: Alignment.center,
child: Image.network('https://i.ibb.co/nrWqyMx/belgium.png'),
)
),
Expanded(
flex: 2,
child: Align(
alignment: Alignment.topLeft,
child: ListView.builder(
itemBuilder: (ctx, index) {
return Container(
height: MediaQuery.of(context).size.width * 0.14,
child: ListTile(
leading: Icon(Icons.radio_button_checked, size: 17),
title: Text(data['ingredients'][index], style: TextStyle(height: 1.3),),
)
);
},
itemCount: data['ingredients'].length,
),
)
)
],
),
),
);
}
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:正文(
数据['title'],
软包装:是的,
),
),
主体:容器(
填充:EdgeInsets.all(MediaQuery.of(context).size.width*0.05),
子:列(
mainAxisAlignment:mainAxisAlignment.spaceAround,
儿童:[
扩大(
弹性:1,
子对象:对齐(
对齐:对齐.center,
子:Image.network('https://i.ibb.co/nrWqyMx/belgium.png'),
)
),
扩大(
弹性:2,
子对象:对齐(
对齐:alignment.topLeft,
子项:ListView.builder(
itemBuilder:(ctx,索引){
返回容器(
高度:MediaQuery.of(上下文).size.width*0.14,
孩子:ListTile(
前导:图标(图标。单选按钮已选中,大小:17),
标题:文本(数据['Components'][索引],样式:文本样式(高度:1.3),
)
);
},
itemCount:数据['Components']。长度,
),
)
)
],
),
),
);
}
链接:脚手架(
appBar:appBar(
标题:正文(
“MyAppBar”,
风格:
TextStyle(颜色:Colors.cyan[100],fontwweight:fontwweight.bold),
),
),
正文:ListView(
儿童:[
容器(
孩子:Image.network
('https://i.ibb.co/nrWqyMx/belgium.png'),
),
ListView.builder(
物理:物理(),
收缩膜:对,
itemBuilder:(ctx,索引){
返回容器(
高度:MediaQuery.of(上下文).size.width*0.14,
孩子:ListTile(
前导:图标(图标。单选按钮已选中,大小:17),
标题:文本(“数据['Components'][索引]”,样式:TextStyle(高度:1.3),
)
);
},
物品计数:25,
)
],
),
);
您需要将滚动视图作为小部件的主容器。大概是这样的:
@覆盖
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
主体:容器(
颜色:颜色,红色,
子:SingleChildScrollView(
子:列(
儿童:[
正文(“标题”),
ListView.builder(
收缩膜:对,
物品计数:3,
itemBuilder:(上下文,索引){
返回容器(
身高:300,
宽度:double.infinity,
装饰:盒子装饰(
颜色:颜色,蓝色,
边界:边界(
颜色:颜色,黑色,
样式:BorderStyle.solid
)
),
);
},
)
],
),
),
)
);
}
}
这不起作用:出现错误:RenderFlex子项具有非零弹性,但传入的高度约束是无限制的。
您必须给出容器的高度。在最后一个文本之后向上滚动页面会占用更多空间,然后使用列表调整高度,但这会影响其他设备,这些设备的高度与我所做的不一样这??它不起作用:GetRenderFlex子项具有非零弹性,但传入的高度约束是无限制的。
在我在列前添加小部件后,您是否像我的示例一样使用收缩包装:true?是的,我这样做,我只在代码上添加SingView,而不更改代码上的任何内容,将Singlview包装到列中,然后收缩包装:true
Scaffold(
appBar: AppBar(
title: Text(
'MyAppBar',
style:
TextStyle(color: Colors.cyan[100], fontWeight: FontWeight.bold),
),
),
body: ListView(
children: <Widget>[
Container(
child: Image.network
('https://i.ibb.co/nrWqyMx/belgium.png'),
),
ListView.builder(
physics: ScrollPhysics(),
shrinkWrap: true,
itemBuilder: (ctx, index) {
return Container(
height: MediaQuery.of(context).size.width * 0.14,
child: ListTile(
leading: Icon(Icons.radio_button_checked, size: 17),
title: Text("data['ingredients'][index]", style: TextStyle(height: 1.3),),
)
);
},
itemCount:25,
)
],
),
);