首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何减小库比蒂诺小条导航栏的高度,使其看起来像一个具有可滚动主体的普通库比蒂诺导航栏

如何减小库比蒂诺小条导航栏的高度,使其看起来像一个具有可滚动主体的普通库比蒂诺导航栏
EN

Stack Overflow用户
提问于 2019-02-19 20:19:12
回答 1查看 3.3K关注 0票数 3
代码语言:javascript
复制
     @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。

有没有人知道解决这个问题的办法?我想要一个细长的栏/不可折叠与滚动的内容在正文。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-19 20:54:16

您可以使用-SliverPersistentHeader来使用- CupertinoNavigationBar

代码语言:javascript
复制
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就不会被固定在顶部。

代码语言:javascript
复制
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');
                    },
                  ),
                ),
              ),
            ),
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54766193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档