Flutter Sliver 粘性标题将内容隐藏在圆角后面

问题描述 投票:0回答:1

我实现了一个 SliverStickyHeader,它在我的

CustomScrollView
中工作得很好。我只有一个问题:

我的粘性标题基本上是

Container
borderRadius
。现在我希望我的内容隐藏在那个条子后面,这样只有脚手架背景可见。这是用于澄清的图像:

enter image description here

如您所见,白色容器在蓝色 SliverStickyHeader 后面可见。

我被困在这里,不知道这是否可能。为每一个帮助感到高兴,即使它很糟糕:D很乐意让它发挥作用。

将我的 Sliver 内容隐藏在标题后面。这就是目标。

如果您需要更多信息,请告诉我。

flutter dart sticky flutter-sliver
1个回答
0
投票

将其添加到

delegate
中对我有用:

class WishlistSliverPersistentHeaderDelegate
    extends SliverPersistentHeaderDelegate {
  ...

  WishlistSliverPersistentHeaderDelegate({
    ...
  });

  @override
  Widget build(
    BuildContext context,
    double shrinkOffset,
    bool overlapsContent,
  ) {
    final t = shrinkOffset / (maxExtent);
    final collapsedOffset = ui.lerpDouble(0, 1, t)!;
    final collapsedOffsetSafe = collapsedOffset.safeOpacity;
    return Column(
      mainAxisAlignment: MainAxisAlignment.end,
      children: [
        Expanded(
          child: Stack(
            alignment: Alignment.topCenter,
            children: [
              _buildHeader(context, t),
              ...
              _builderBorderRadius(context),
            ],
          ),
        ),
      ],
    );
  }

  Positioned _builderBorderRadius(BuildContext context) {
    return Positioned(
      bottom: 0,
      left: 0,
      right: 0,
      child: Container(
        height: 30,
        decoration: BoxDecoration(
          color: whiteAdaptive(context),
          borderRadius: const BorderRadius.only(
            topLeft: Radius.circular(30),
            topRight: Radius.circular(30),
          ),
        ),
      ),
    );
  }
© www.soinside.com 2019 - 2024. All rights reserved.