Who knows how to get the rounded SliverAppBar with a correctly clipped background?
Also, it would be great to have the same rounded corners on the start position.
SliverAppBar(
shape: ContinuousRectangleBorder(
borderRadius: BorderRadius.vertical(
bottom: Radius.circular(48.0),
),
),
backgroundColor: AppColors.primary,
expandedHeight: 200.0,
pinned: true,
stretch: true,
flexibleSpace: FlexibleSpaceBar(
title: Text(
plan.title,
textAlign: TextAlign.center,
),
titlePadding: EdgeInsets.all(16.0),
centerTitle: true,
background: ShaderMask(
shaderCallback: (rect) => LinearGradient(
colors: [
Colors.black.withOpacity(0.2),
Colors.black.withOpacity(0.6),
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
).createShader(rect),
blendMode: BlendMode.srcATop,
child: Image.network(
plan.image,
width: double.infinity,
height: 250.0,
fit: BoxFit.cover,
loadingBuilder: (_, child, progress) {
return (progress != null)
? Container(
height: 250.0,
child: Center(
child: CircularProgressIndicator(),
),
)
: child;
},
),
),
),
),
To achieve the desired behavior you can wrap your FlexibleSpaceBar with ClipRRect and give it a circular BorderRadius:
flexibleSpace: ClipRRect(
borderRadius: BorderRadius.vertical(
bottom: Radius.circular(20.0),
),
child: FlexibleSpaceBar(
...
),
),
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.