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

How do you reduce the height of the Cupertino Sliver Navigation bar to make it look like an ordinary Cupertino Navigation Bar with a scrollable body

     @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 中的可折叠 space。我不希望 largeTitle 属性 在那里,但不幸的是 CupertinoSliverNavigationBar 需要它。因此,我通过放置一个高度为 0.0 的空 Container 小部件来解决这个问题,就像您在一个 android 设计的条子应用栏中将可扩展高度设置为 0.0 以使其具有不可扩展的高度一样。但是,对于 The CupertinoSliverNavigationBar 它不起作用,因为它留下了一个空的可扩展 space。我正在尝试实现一个纤细的 Cupertino 风格的导航栏。我不能使用 CupertinoNavigationBar,因为我正在使用 CustomScrollView 小部件,因为滚动内容和 flutter 在这种用例中需要 CupertinoSliverNavigationBar。

有人知道解决此限制的方法吗?我想要一个纤细的 bar/non-collapsible,正文中有可滚动的内容。

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