gpt4 book ai didi

flutter - 如何降低 Cupertino Sliver 导航栏的高度,使其看起来像具有可滚动主体的普通 Cupertino 导航栏

转载 作者:IT王子 更新时间:2023-10-29 06:43:10 26 4
gpt4 key购买 nike

     @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 小部件来解决它,就像您将可扩展高度设置为 0.0 在 android 设计的条形应用栏中以为其提供不可扩展的高度。但是,对于 CupertinoSliverNavigationBar 它不起作用,因为它留下了一个空的可扩展空间。我正在尝试实现一个纤细的 Cupertino 风格的导航栏。我不能使用 CupertinoNavigationBar,因为我正在使用 CustomScrollView 小部件,因为滚动内容和 flutter 在这种用例中需要 CupertinoSliverNavigationBar。

有谁知道解决这个限制的方法吗?我想要一个细长的条形/不可折叠的,在正文中有可滚动的内容。

最佳答案

可以使用-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');
},
),
),
),
),

关于flutter - 如何降低 Cupertino Sliver 导航栏的高度,使其看起来像具有可滚动主体的普通 Cupertino 导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54766193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com