Flutter 颤振-在两个固定容器之间插入列表视图

Flutter 颤振-在两个固定容器之间插入列表视图,flutter,listview,scroll,containers,Flutter,Listview,Scroll,Containers,此特定屏幕由一个大容器(屏幕高度)组成:此容器由三部分组成:页眉(固定容器:屏幕大小的10%)、页脚(固定容器:屏幕大小的10%)和中间部分:容器:屏幕大小的80%。 我希望中间的容器是可滚动的:所以我插入了一个LISTVIEW作为这个容器的子容器。。。但它一直告诉我我的RenderFlex溢出了。。。。为什么中间容器的内容不在页眉和页脚之间滚动 代码如下: Scaffold( backgroundColor: Colors.indigo[900], appBar: Ap

此特定屏幕由一个大容器(屏幕高度)组成:此容器由三部分组成:页眉(固定容器:屏幕大小的10%)、页脚(固定容器:屏幕大小的10%)和中间部分:容器:屏幕大小的80%。 我希望中间的容器是可滚动的:所以我插入了一个LISTVIEW作为这个容器的子容器。。。但它一直告诉我我的RenderFlex溢出了。。。。为什么中间容器的内容不在页眉和页脚之间滚动

代码如下:

Scaffold(
      backgroundColor: Colors.indigo[900],
      appBar: AppBar(
        backgroundColor: Colors.white,
        elevation: 0,
        automaticallyImplyLeading: false,
        leading: IconButton(
            icon: Icon(Icons.arrow_back_ios_rounded,
                color: Colors.red[400], size: 25.0),
            onPressed: () {
              uD.clearSearchList();
              Navigator.pushReplacementNamed(context, StudentHomeScreen.id);
            }),
        title: Text(
          'ETAPE 1 - Découverte',
          style: TextStyle(color: Colors.indigo[900], fontSize: 22),
        ),
        actions: [
          Container(
            margin: const EdgeInsets.only(right: 10),
            child: Icon(Icons.memory, size: 45, color: Colors.red[900]),
          ),
        ],
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Container(
          height: MediaQuery.of(context).size.height,
          decoration: BoxDecoration(
            color: Colors.orange[50],
            borderRadius: BorderRadius.circular(10.0),
          ),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: [
              Container(
                height: (MediaQuery.of(context).size.height) * 0.12,
                padding: const EdgeInsets.fromLTRB(12, 12, 12, 0),
                decoration: BoxDecoration(
                  color: Colors.orange[100],
                  borderRadius: BorderRadius.only(
                    topLeft: Radius.circular(10),
                    topRight: Radius.circular(10),
                  ),
                ),
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: [
                    Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        Text(
                          'Activité 1',
                          style: TextStyle(
                              color: Colors.red[900],
                              fontSize: 30,
                              fontWeight: FontWeight.bold),
                        ),
                        Text(
                          'Mot n°1/24',
                          style: TextStyle(
                            color: Colors.indigo[900],
                            fontSize: 17.0,
                          ),
                        ),
                      ],
                    ),
                    SleekCircularSlider(
                      appearance: CircularSliderAppearance(
                          infoProperties: InfoProperties(
                            modifier: (reussite) {
                              return '${reussite.toInt()} / 5';
                            },
                            bottomLabelText: 'Réussite',
                            bottomLabelStyle:
                                TextStyle(fontSize: 12, color: Colors.red[900]),
                          ),
                          size: 90,
                          customColors: CustomSliderColors(
                              progressBarColor: Colors.green[900]),
                          customWidths:
                              CustomSliderWidths(progressBarWidth: 8)),
                      min: 0,
                      max: 5,
                      initialValue: reussite <= 5 ? reussite : 5,
                    )
                  ],
                ),
              ),
              Container(
                height: (MediaQuery.of(context).size.height) * 0.8,
                child: ListView(
                  shrinkWrap: true,
                  children: [
                    Container(
                      padding: EdgeInsets.all(12.0),
                      margin: const EdgeInsets.only(top: 8),
                      child: Text(
                        'Ecoute et répète 5 fois le mot en anglais.',
                        style:
                            TextStyle(color: Colors.indigo[700], fontSize: 17),
                      ),
                    ),
                    Container(
                      margin: const EdgeInsets.all(12),
                      decoration: BoxDecoration(
                        color: Colors.white,
                        border: Border.all(
                          width: 1.0,
                        ),
                        borderRadius: BorderRadius.circular(10.0),
                      ),
                      padding: const EdgeInsets.only(top: 16),
                      child: Row(
                        children: [
                          Container(
                            height: 200,
                            child: Image.asset(
                              'images/avatar_teacher.jpeg',
                            ),
                          ),
                          Padding(
                            padding: const EdgeInsets.all(24.0),
                            child: Column(
                              crossAxisAlignment: CrossAxisAlignment.center,
                              children: [
                                Container(
                                  child: Text(
                                    'An adult',
                                    style: TextStyle(
                                      color: Colors.red[900],
                                      fontSize: 23,
                                    ),
                                  ),
                                ),
                                Container(
                                  margin: const EdgeInsets.only(bottom: 60),
                                  child: Text(
                                    'Un adulte',
                                    style: TextStyle(
                                      color: Colors.indigo[900],
                                      fontSize: 15,
                                    ),
                                  ),
                                ),
                                GestureDetector(
                                  child: Container(
                                    height: 45,
                                    margin:
                                        EdgeInsets.fromLTRB(0, 5.0, 0, 15.0),
                                    alignment: Alignment.topRight,
                                    child: Icon(
                                      Icons.volume_up,
                                      color: Colors.indigo[500],
                                      size: 55.0,
                                    ),
                                  ),
                                  onTap: () {
                                    Tts.speak(
                                        phrase: 'little',
                                        langue: Language.english);
                                  },
                                ),
                                Container(
                                  alignment: Alignment.topRight,
                                  child: Text('/adult/'),
                                ),
                              ],
                            ),
                          ),
                        ],
                      ),
                    ),
                    Container(
                      height: 80,
                      margin: const EdgeInsets.symmetric(vertical: 20),
                      alignment: Alignment.center,
                      child: IconButton(
                          icon: Icon(
                            Icons.mic,
                            color: Colors.red[900],
                            size: 50,
                          ),
                          onPressed: () async {
                            uD.checkSpokenWords('adult', reussite);
                          }),
                    ),
                    Container(
                      alignment: Alignment.center,
                      child: Text(
                        'Clique sur le micro et répète le mot',
                        textAlign: TextAlign.center,
                        style: TextStyle(
                          color: Colors.black45,
                          fontSize: 15.0,
                        ),
                      ),
                    ),
                    SizedBox(
                      height: 50.0,
                    ),
                    Container(
                      width: double.infinity,
                      alignment: Alignment.centerLeft,
                      margin: const EdgeInsets.only(top: 12),
                      decoration: BoxDecoration(
                        color: Colors.white,
                        border: Border.all(
                          width: 1.0,
                        ),
                        borderRadius: BorderRadius.circular(10.0),
                      ),
                      child: Padding(
                        padding: const EdgeInsets.all(8.0),
                        child: Row(
                          children: [
                            Text('Voici ce que j\'ai compris : '),
                            Text(uD.spokenWords),
                          ],
                        ),
                      ),
                    ),
                  ],
                ),
              ),
              Container(
                height: (MediaQuery.of(context).size.height) * 0.08,
                padding: const EdgeInsets.all(12),
                decoration: BoxDecoration(
                  color: Colors.orange[100],
                  borderRadius: BorderRadius.only(
                    bottomLeft: Radius.circular(10),
                    bottomRight: Radius.circular(10),
                  ),
                ),
                margin: const EdgeInsets.only(top: 8),
                child: RoundedProgressBar(
                    milliseconds: 1000,
                    childLeft: Text(
                      'Réussite de l\'activité : ',
                      style: TextStyle(color: Colors.indigo[900]),
                    ),
                    childRight: Text("$reussite%",
                        style: TextStyle(color: Colors.red[900])),
                    percent: reussite,
                    theme: RoundedProgressBarTheme.blue),
              ),
            ],
          ),
        ),
      ),
    );
脚手架(
背景颜色:颜色。靛蓝[900],
appBar:appBar(
背景颜色:Colors.white,
海拔:0,
自动嵌入:false,
领先:IconButton(
图标:图标(Icons.arrow\u back\u ios\u圆角,
颜色:颜色。红色[400],尺寸:25.0),
已按下:(){
uD.clearSearchList();
Navigator.pushReplacementNamed(上下文,StudentHomeScreen.id);
}),
标题:正文(
“ETAPE 1-Découvert”,
样式:TextStyle(颜色:Colors.indigo[900],字体大小:22),
),
行动:[
容器(
边距:仅限常量边集(右:10),
子:图标(Icons.memory,大小:45,颜色:Colors.red[900]),
),
],
),
主体:填充物(
填充:常数边集全部(16.0),
子:容器(
高度:MediaQuery.of(context).size.height,
装饰:盒子装饰(
颜色:颜色。橙色[50],
边界半径:边界半径。圆形(10.0),
),
子:列(
crossAxisAlignment:crossAxisAlignment.start,
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
容器(
高度:(MediaQuery.of(context.size.height)*0.12,
填充:从LTRB(12,12,12,0)开始的常数边集,
装饰:盒子装饰(
颜色:颜色。橙色[100],
borderRadius:仅限borderRadius(
左上:半径。圆形(10),
右上角:半径。圆形(10),
),
),
孩子:排(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
纵队(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
正文(
“活动1”,
样式:TextStyle(
颜色:颜色。红色[900],
尺寸:30,
fontWeight:fontWeight.bold),
),
正文(
“Mot编号1/24”,
样式:TextStyle(
颜色:颜色。靛蓝[900],
字体大小:17.0,
),
),
],
),
圆滑滑道(
外观:圆形滑动外观(
InfoProperty:InfoProperty(
修饰语:(重复使用站点){
返回“${reussite.toInt()}/5”;
},
底部标签文字:“Réussite”,
底部标签样式:
TextStyle(字体大小:12,颜色:Colors.red[900]),
),
尺码:90,
自定义颜色:自定义幻灯片颜色(
progressBarColor:Colors.green[900]),
自定义宽度:
自定义滑块宽度(progressBarWidth:8)),
分:0,,
最高:5,

initialValue:reussite您应该将中间的容器(高度为0.8*MediaQuery的容器)替换为Expanded,这样它将占用其他两个容器之间的可用空间。

非常感谢!:)我觉得很愚蠢;)