Get Container取屏幕下方Header的剩余空间。

问题描述 投票:1回答:1

我的页面布局是这样的。

return new Scaffold(
  appBar: _getAppBarWidget(_currentIndex),
  body: return CustomScrollView(slivers: [
          SliverPersistentHeader(
            delegate: ProfileBar(expandedHeight: 200),
            pinned: true,
          ),
          SliverToBoxAdapter(
            child: ProfileView()
          ),
      ]);,
  bottomNavigationBar: BottomBar(),
);

我想让我的ProfileView占据整个屏幕的其余部分。

ProfileView() 我的页面布局看起来是这样的。

return Container(
  color: Colors.green;
  child: RaisedButton(
    child: const Text('Something'),
    textColor: Colors.white,
    color: Colors.redAccent,
    onPressed: () {}
  )
);

但我就是无法让我的ProfileView的Container 占据SliverPersistentHeader下方剩余的整个屏幕高度。

我尝试了很多不同的方法,但都没有成功。(例如,使用Expended)有人对此有建议吗?

编辑:我唯一成功的是硬编码。但这不是我想要的。

flutter flutter-layout flutter-sliver
1个回答
1
投票

为了解决这个问题,你可以使用SliverFillRemaining代替SliverToBoxAdapter。

所以你的更新代码将是

return new Scaffold(
appBar: _getAppBarWidget(_currentIndex),
body: return CustomScrollView(slivers: [
      SliverPersistentHeader(
        delegate: ProfileBar(expandedHeight: 200),
        pinned: true,
      ),
      SliverFillRemaining(
        child: ProfileView()
      ),
  ]);,
bottomNavigationBar: BottomBar(),
);
© www.soinside.com 2019 - 2024. All rights reserved.