如何修改 Sliverappbar 以便在向上滚动时可以看到带有 FlexibleSpaceBar 的背景图像?

Posted

技术标签:

【中文标题】如何修改 Sliverappbar 以便在向上滚动时可以看到带有 FlexibleSpaceBar 的背景图像?【英文标题】:How to make modify Sliverappbar so I can see the background image with FlexibleSpaceBar when I scroll up? 【发布时间】:2021-05-03 19:57:22 【问题描述】:

如何修改 Sliverappbar 以便在我向上滚动时可以看到带有 FlexibleSpaceBar 的背景图片?

SliverAppBar(
          expandedHeight: 200.0,
          floating: false,
          pinned: true,
          flexibleSpace: FlexibleSpaceBar(
              centerTitle: true,
              title: Text("Collapsing Toolbar",
                  style: TextStyle(
                    color: Colors.white,
                    fontSize: 16.0,
                  )),
              background: Image.network(
                "https://images.pexels.com/photos/396547/pexels-photo-396547.jpeg?auto=compress&cs=tinysrgb&h=350",
                fit: BoxFit.cover,
              )),
        ),

【问题讨论】:

【参考方案1】:

恐怕这是 FlexibleSpaceBar 的标准行为。您可以更改颜色,但不能使其透明。

我发现的一种解决方法是使用 Stack 而不是 FlexibleSpaceBar:

SliverAppBar(
  expandedHeight: 200.0,
  floating: true,
  pinned: true,
  snap: true,
  flexibleSpace: Stack(
    children: <Widget>[
      Positioned.fill(
        child: Image.network(
          "https://images.pexels.com/photos/396547/pexels-photo-396547.jpeg?auto=compress&cs=tinysrgb&h=350",
          fit: BoxFit.cover,
        ),
      ),
      Positioned.fill(
        child: Align(
          alignment: Alignment.bottomCenter,
          child: Padding(
            padding: const EdgeInsets.only(bottom: 8.0),
            child: Text(
              "Collapsing Toolbar",
              style: TextStyle(
                color: Colors.white,
                fontSize: 24.0,
              ),
              textAlign: TextAlign.center,
            ),
          ),
        ),
      ),
    ],
  ),
),

【讨论】:

您好蒂埃里,感谢您抽出宝贵时间。是的,它非常接近,但如果文本或其他图像太长,它会在顶部的后箭头上展开。如何限制文本“折叠工具栏”或图像的长度? 不确定我是否理解。我们在说什么后退箭头?可以提供截图吗?你想限制文本的长度吗?还是调整字体大小? 在欢迎页面之后,我有一个按钮,可以将其路由到另一个带有我们正在讨论的 sliverappbar 的页面,默认情况下它会生成一个后退箭头来弹出现有路由。但如果我有很长的文字或图片,它会出现在弹出路线的后退箭头后面。

以上是关于如何修改 Sliverappbar 以便在向上滚动时可以看到带有 FlexibleSpaceBar 的背景图像?的主要内容,如果未能解决你的问题,请参考以下文章

我如何制作一个类似于Google新闻的SliverAppBar?

向下滚动时隐藏的 Flutter TabBar 和 SliverAppBar

使用可折叠应用栏(sliverAppBar)时如何保留tabView的滚动位置?

如何使用 NestedScrollView 滚动以在 SliverAppBar 上使用堆栈圆形头像?

滚动带有ScrollController的CustomScrollView时,SliverAppbar仍然可见

如何创建具有上部固定和下部浮动元素的 SliverAppBar?