【问题标题】:Flutter SingleChildScrollView not scrollingFlutter SingleChildScrollView 不滚动
【发布时间】:2021-08-11 09:37:02
【问题描述】:

我的 singleChildScollView 不会垂直滚动。我已经检查了有关此问题的类似问题,但没有一个对我有用。 页面填满了项目,主页按钮位于底部...

...所以它看起来是正确的,它只是不让我滚动。 任何人都可以帮忙吗? [ 编辑 - 请注意在下面的示例代码中,我已经简化了原始小部件树并删除了主页按钮]...

Scaffold(
    body: SingleChildScrollView(
               child: ListView.builder(
                           scrollDirection: Axis.vertical,
                           shrinkWrap: true,
                           itemBuilder: (ctx, index) {
                                  ...list of items here...
                           }
                      ),
          ),
)

【问题讨论】:

  • 您将列表视图放在 SingleChildScrollView 中,这可能是您的问题的原因,请尝试删除 SingleChildScrollView 父小部件
  • @FatihaIMOUSSAINE,谢谢我试过了,但后来我收到“底部溢出...”消息和黄/黑线
  • 我已经简化了一点,所以我现在将更新上面的小部件树......

标签: flutter


【解决方案1】:

@james 请检查一下

Scaffold(
      body: Stack(
      children: [
        SingleChildScrollView(
          child: ListView.builder(
              scrollDirection: Axis.vertical,
              shrinkWrap: true,
              physics: ScrollPhysics(),
              itemCount: 30,
              itemBuilder: (ctx, index) {
                return Padding(
                  padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 16),
                  child: Text("index $index"),
                );
              }
          ),
        ),
        Align(
          alignment: Alignment.bottomCenter,
          child: ElevatedButton(
            onPressed: () {Navigator.pop(context);},
            child: Text('Homepage'),
          ),
        ),

      ],
    ),
    )

【讨论】:

  • 谢谢 - 我已经尝试过了,它允许我滚动。主页按钮堆叠在顶部(正如预期的那样:))。我会看看是否可以修改我的原始代码以包含此布局并回复您。
  • 啊,我需要的是缺少的“物理:ScrollPhysics()”行!我感觉自己像个菜鸟!感谢您的帮助。
【解决方案2】:

您可以通过两个步骤在Column 小部件中使用SingleChildScrollView

  1. 将其包裹在SizedBox
  2. height 设置为SizedBox 小部件

试试这个:

Scaffold(
  body:
    child: Column(
              mainAxisSize: MainAxisSize.max,
              children: [
                 SizedBox(
                     //set a height
                     height : MediaQuery.of(context).size.height/5,
                     child: SingleChildScrollView(
                               child: Column(
                                         mainAxisSize: MainAxisSize.max,
                                         children: [
                                             ListView.builder(
                                                scrollDirection: Axis.vertical,
                                                shrinkWrap: true,
                                                itemBuilder: (ctx, index) {
                                                  ...list of items here...
                                                }
                                             ),
                                         ],
                               ),
                     ),
                 ),
                 Center(
                        child: ElevatedButton(
                                onPressed: () {Navigator.pop(context);},
                                child: Text('Homepage'),
                        ),
                ),

              ],
    ),
)

【讨论】:

  • 谢谢 - 我添加了 SizedBox(替换了 Expanded 小部件),但它仍然无法滚动
  • 我现在在上面的例子中简化了小部件树...
【解决方案3】:

感谢您的帮助,特别是@Jahidul Islam。 我错过了物理:ScrollPhysics() 行!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-05
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 2021-01-02
    • 2020-08-09
    相关资源
    最近更新 更多