@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
child: CustomScrollView(
slivers: <Widget>[
CupertinoSliverNavigationBar(
largeTitle: Container(height:0.0),
trailing:
IconButton(
icon: Icon(
IconData(0xe900, fontFamily: 'message6'),
color: Colors.black,
size: 25.0,
),
onPressed: () {
// Navigator.pushNamed(context, '/chat');
},
),
middle: Text('Search',style: TextStyle(fontSize: 15.5,
),)
),
],
),
);
}
}我试图在代码片段中消除CupertinoSliverNavigationBar中的可折叠空间。我不希望largeTitle属性出现在那里,但不幸的是CupertinoSliverNavigationBar需要它。因此,我已经解决了这个问题,将一个高度为0.0的空Container小部件放在android设计的狭长应用程序栏中,将可扩展高度设置为0.0,以使其高度不可扩展。然而,对于CupertinoSliverNavigationBar来说,它不起作用,因为它留下了一个空的可扩展空间。我正在尝试实现一个纤细的库比蒂诺风格的导航栏。我不能使用CupertinoNavigationBar,因为我使用的是CustomScrollView小部件,因为需要滚动内容,而flutter在这样的用例中需要CupertinoSliverNavigationBar。
有没有人知道解决这个问题的办法?我想要一个细长的栏/不可折叠与滚动的内容在正文。
发布于 2019-02-19 20:54:16
您可以使用-SliverPersistentHeader来使用- CupertinoNavigationBar
child: CustomScrollView(
slivers: <Widget>[
SliverPersistentHeader(
delegate: MyNav(),
pinned: true,
floating: false,
),
class MyNav extends SliverPersistentHeaderDelegate {
@override
Widget build(
BuildContext context, double shrinkOffset, bool overlapsContent) {
// TODO: implement build
return CupertinoNavigationBar(
middle: Text(
'Search',
style: TextStyle(
fontSize: 15.5,
),
),
trailing: Material(
child: IconButton(
icon: Icon(
IconData(0xe900, fontFamily: 'message6'),
color: Colors.black,
size: 25.0,
),
onPressed: () {
// Navigator.pushNamed(context, '/chat');
},
),
),
);
}
@override
// TODO: implement maxExtent
double get maxExtent => 60.0;
@override
// TODO: implement minExtent
double get minExtent => 60.0;
@override
bool shouldRebuild(SliverPersistentHeaderDelegate oldDelegate) {
// TODO: implement shouldRebuild
return false;
}
}另一种选择是使用- SliverToBoxAdapter小部件。这样,CupertinoNavigationBar就不会被固定在顶部。
child: CustomScrollView(
slivers: <Widget>[
SliverToBoxAdapter(
child: CupertinoNavigationBar(
middle: Text(
'Search',
style: TextStyle(
fontSize: 15.5,
),
),
trailing: Material(
child: IconButton(
icon: Icon(
IconData(0xe900, fontFamily: 'message6'),
color: Colors.black,
size: 25.0,
),
onPressed: () {
// Navigator.pushNamed(context, '/chat');
},
),
),
),
),https://stackoverflow.com/questions/54766193
复制相似问题