Get Container 取 Header 下面剩余的 space 屏幕
Get Container take the remaining space of the screen below the Header
我的页面布局是这样的:
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)有人对此有建议吗?
编辑:我唯一成功的是硬编码。但这不是我想要的。
要解决此问题,您可以使用 SliverFillRemaining 而不是 SliverToBoxAdapter
因此您的更新代码将是
return new Scaffold(
appBar: _getAppBarWidget(_currentIndex),
body: return CustomScrollView(slivers: [
SliverPersistentHeader(
delegate: ProfileBar(expandedHeight: 200),
pinned: true,
),
SliverFillRemaining(
child: ProfileView()
),
]);,
bottomNavigationBar: BottomBar(),
);
我的页面布局是这样的:
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)有人对此有建议吗?
编辑:我唯一成功的是硬编码。但这不是我想要的。
要解决此问题,您可以使用 SliverFillRemaining 而不是 SliverToBoxAdapter
因此您的更新代码将是
return new Scaffold(
appBar: _getAppBarWidget(_currentIndex),
body: return CustomScrollView(slivers: [
SliverPersistentHeader(
delegate: ProfileBar(expandedHeight: 200),
pinned: true,
),
SliverFillRemaining(
child: ProfileView()
),
]);,
bottomNavigationBar: BottomBar(),
);