如果未定义宽度和高度,则SingleChildScrollView内部的容器不会显示

时间:2020-10-24 14:28:21

标签: flutter flutter-layout singlechildscrollview

我有一个脚手架,其结构如下:

body : Column(
children : [
Expanded(
  child : SingleChildScrollView(
  Container (
    Column( 
    //content
    )
  )
  )
),
BottomMenu()
]
)

问题是,如果我未在SingleChildScrollView中定义容器的宽度和高度,则内容将不会显示,但是如果我定义高度,则childscrollview的高度将无法与内容动态配合,我希望高度将内容放入我的容器中,以便我可以滚动到内容结尾。我还是这个新手,所以任何建议和建议都将不胜感激。谢谢

3 个答案:

答案 0 :(得分:0)

最好使用Stack代替该列作为顶部小部件,如下所示:

Stack(
  children: <Widget>[
    SingleChildScrollView(
      Container (
        Column( 
          //content
        )
      )
    ),
    Align(
      alignment: Alignment.bottomCenter,
      child: BottomMenu(),
    ),
 ],
)

这对您有帮助吗?

答案 1 :(得分:0)

您的布局不是最佳做法,请尝试:

return Scaffold(
      body: LayoutBuilder(builder: (context, constraints) {
      return SingleChildScrollView(
        child: Container(
          width: constraints.maxWidth,
          height: constraints.maxHeight,
          child: Column(
            children: [
              //your content
            ],
          ),
        ),
      );
    }));

这将创建一个与屏幕大小相同的容器,并且其中包含一列,该列将滚动显示所有内容。

答案 2 :(得分:-1)

我不明白到底是什么问题。但是我可以提供一些想法。

尝试这样的事情,

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: [
          Container(
            color: Colors.blue,
            width: MediaQuery.of(context).size.width,
            height: MediaQuery.of(context).size.height * 0.9,
            child: SingleChildScrollView(
              child: Container(
                width: MediaQuery.of(context).size.width,
                height: MediaQuery.of(context).size.height,
                child: ListView(
                  children: [
                    Row(
                      children: [
                        Container(
                          margin: const EdgeInsets.only(bottom: 10.0),
                          height: 100.0,
                          width: 100.0,
                          color: Colors.red,
                        ),
                      ],
                    ),
                     
                    
                    ....
                    
                  ],
                ),
              ),
            ),
          ),
          Container(
            width: MediaQuery.of(context).size.width,
            height: MediaQuery.of(context).size.height * 0.1,
            child: BottomMenu(),
          ),
        ],
      ),
    );
  }

希望能解决您的问题。