如果使用 SliverStack,如何使小部件位于屏幕底部?

Posted

技术标签:

【中文标题】如果使用 SliverStack,如何使小部件位于屏幕底部?【英文标题】:how to make a widget to be on the bottom of the screen if using SliverStack? 【发布时间】:2021-10-21 21:16:55 【问题描述】:

如上图所示,我在顶部(应用栏正下方)有一个红色容器棒。这是我使用的代码

  CustomScrollView(
      slivers: [
          SliverAppBar(),
          _buildStack(),
      ]
  ),

 
  
  Widget _buildStack() 
    return SliverStack(
       children: [

        // I have other widgets here ..

        SliverPositioned(
          bottom: 0, // <-- I have set the bottom to be zero
          child: SliverToBoxAdapter(
            child: _buildRedBox(),
        ),
     
     ],
   )
 
  

  Widget _buildRedBox() 
    return Container(
      width: double.infinity,
      height: 50,
      color: Colors.red,
    );
  

我正在使用sliver tool package,所以我可以访问SliverStackSliverPositioned

如您所见,我已将底部设置为零。但是红色的框仍然在顶部。我需要在我的 SliverStack 内制作屏幕底部的红色框。该怎么做?

【问题讨论】:

【参考方案1】:

使用 SliverFillRemaining 小部件而不是 SliverPositioned 小部件。

SliverFillRemaining 会自动调整大小以填充最后一个列表项底部和视口底部之间的空间

SliverFillRemaining(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.end,
        children: [
          _buildRedBox(),
        ],
      ),
    ),

【讨论】:

以上是关于如果使用 SliverStack,如何使小部件位于屏幕底部?的主要内容,如果未能解决你的问题,请参考以下文章

如何使小部件的高度最多为 X 像素?

Kivy:如何使小部件表现得像溢出:隐藏

如何使小部件在颤动中相互浮动[关闭]

如何使小部件随 PyQt5 中的窗口缩放?

如何使小部件填充列中的剩余空间

如何在kivy的gridlayout中使小部件跨越多个列/行