Android 当前在颤振中使用列表的方式,可通过扩展或flex滚动

Android 当前在颤振中使用列表的方式,可通过扩展或flex滚动,android,ios,flutter,flutter-layout,Android,Ios,Flutter,Flutter Layout,我的屏幕不可滚动,并且具有限制高度(仅可在限制高度中滚动) 我想让我的页面可以滚动, 这是我的当前页面: 如果你在上面的gif中看到,我的页面是不可滚动的,只能在一个框中滚动,我非常喜欢在所有页面上正常滚动,我应该在这里使用ListView吗??但是我怎样才能让图片和文字像上面那样响应呢?但是我确实把文本的高度也弄得太近了,我能知道你怎么把列表上的文本也缩小了吗 这是我的小部件代码 Widget build(BuildContext context) { return Scaffold

我的屏幕不可滚动,并且具有限制高度(仅可在限制高度中滚动) 我想让我的页面可以滚动, 这是我的当前页面:

如果你在上面的gif中看到,我的页面是不可滚动的,只能在一个框中滚动,我非常喜欢在所有页面上正常滚动,我应该在这里使用ListView吗??但是我怎样才能让图片和文字像上面那样响应呢?但是我确实把文本的高度也弄得太近了,我能知道你怎么把列表上的文本也缩小了吗

这是我的小部件代码

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子项具有非零弹性,但传入的高度约束是无限制的。
您必须给出容器的高度。在最后一个文本之后向上滚动页面会占用更多空间,然后使用列表调整高度,但这会影响其他设备,这些设备的高度与我所做的不一样这??它不起作用:Get
RenderFlex子项具有非零弹性,但传入的高度约束是无限制的。
在我在列前添加小部件后,您是否像我的示例一样使用收缩包装: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,
            )
          ],
      ),
    );