即使我总是可滚动,我的 Listview 也不会滚动

Posted

技术标签:

【中文标题】即使我总是可滚动,我的 Listview 也不会滚动【英文标题】:Flutter my Listview is not scrolling even I have alwayscrollable 【发布时间】:2021-01-01 22:46:54 【问题描述】:

我真的不明白是什么导致了错误。

我的代码在一个带有返回 Widget 方法的单独类中,该方法返回一个包含我的 Listview 的 Stack。

注意:当我使用 Listview 复制 Container 并修改了相应的值时;然后再次粘贴到一个以 A Stack 为父项的新项目中,它似乎工作正常。

代码如下:

AddStockUI()
    Widget getAddStockUI() 
        final mediaSize = MediaQuery.of(context).size;
        return Container(
          width: mediaSize.width,
          height: mediaSize.height,
          color: Colors.white,
          child: Stack(
            children: <Widget>[
              //Head - image
              Container(
                width: mediaSize.width * .8,
                height: mediaSize.height * .2,
                margin: EdgeInsets.only(
                  left: mediaSize.width * .1,
                  right: mediaSize.width * .1,
                  top: mediaSize.height * .05,
                ),
                child: Row(
                  children: <Widget>[
                    Container(
                      width: mediaSize.width * .37,
                      height: mediaSize.height * .2,
                      child: Image.asset(
                        'assets/images/image_add_image.png',
                        width: mediaSize.width * .37,
                        height: mediaSize.height * .2,
                        filterQuality: FilterQuality.high,
                        fit: BoxFit.fill,
                      ),
                    ),
                    Spacer(),
                    Container(
                        constraints: BoxConstraints(
                            maxHeight: mediaSize.height * .2,
                            maxWidth: mediaSize.width * .37),
                        padding: EdgeInsets.all(0),
                        child: ListView.builder(
                            padding: EdgeInsets.all(0),
                            physics: AlwaysScrollableScrollPhysics(),
                            itemCount: myMapDesc.keys.length + 1,
                            itemBuilder: (BuildContext ctx, int index) 
                              if (index == 0) 
                                return Container(
                                  width: mediaSize.width * .35,
                                  height: mediaSize.height * .03,
                                  child: Row(
                                    children: <Widget>[
                                      Center(
                                          child: Container(
                                        width: mediaSize.width * .14,
                                        child: AutoSizeText(
                                          "variation",
                                          style: TextStyle(color: myLightDarkColor),
                                          maxFontSize: 14,
                                          minFontSize: 12,
                                          maxLines: 1,
                                        ),
                                      )),
                                      Spacer(),
                                      Center(
                                          child: Container(
                                        width: mediaSize.width * .1,
                                        child: AutoSizeText(
                                          "value",
                                          style: TextStyle(color: myLightDarkColor),
                                          maxFontSize: 14,
                                          minFontSize: 12,
                                          maxLines: 1,
                                        ),
                                      )),
                                      Spacer(),
                                      Container(width: mediaSize.width * .11)
                                    ],
                                  ),
                                );
                               else 
                                return Container(
                                  margin:
                                      EdgeInsets.only(top: mediaSize.height * .025),
                                  width: mediaSize.width * .35,
                                  height: mediaSize.height * .03,
                                  child: Row(
                                    children: <Widget>[
                                      Center(
                                          child: Container(
                                        width: mediaSize.width * .1,
                                        child: AutoSizeText(
                                          myMapDesc.keys
                                              .toList()[index - 1]
                                              .toString(),
                                          style: TextStyle(color: myLightDarkColor),
                                          maxFontSize: 14,
                                          minFontSize: 12,
                                          maxLines: 1,
                                        ),
                                      )),
                                      Spacer(),
                                      Center(
                                          child: Container(
                                        width: mediaSize.width * .1,
                                        child: AutoSizeText(
                                          myMapDesc.values
                                              .toList()[index - 1]
                                              .toString(),
                                          style: TextStyle(color: myLightDarkColor),
                                          maxFontSize: 14,
                                          minFontSize: 12,
                                          maxLines: 1,
                                        ),
                                      )),
                                      Spacer(),
                                      Icon(
                                        Icons.remove_circle,
                                        color: Colors.red,
                                      )
                                    ],
                                  ),
                                );
                              
                            ))
                  ],
                ),
              ),
       
    

【问题讨论】:

【参考方案1】:

尝试用 SingleChildScrollView 包装您的 ListView

【讨论】:

如何包装父小部件? 第一个容器?? 最后一次尝试.. 用SingleChildScrollView 包装你的Stack() 小部件,如果这不起作用,我很抱歉我没有想法...... :(

以上是关于即使我总是可滚动,我的 Listview 也不会滚动的主要内容,如果未能解决你的问题,请参考以下文章

Android View 不会通过滑动手势滚动,也不会滚动。将 ListView 与 ArrayAdapter 一起使用

无法在标准 ListView 小部件上滚动;总是过度渲染 150px

即使收到更新的数据,Flutter ListView.builder 的 UI 也不会被 getx 更新

如何在颤动中使我的文本与 listview.builder 一起滚动

一个 ListView 在 AnimatedCrossFade 中不可滚动

如何使我的 ListView 在颤动中可滚动?