flutter - Rounded SliverAppBar 背景问题
问题描述
谁知道如何获得具有正确裁剪背景的圆形 SliverAppBar?
此外,在起始位置具有相同的圆角会很棒。
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;
},
),
),
),
),
解决方案
要实现所需的行为,您可以使用ClipRRect包装您的FlexibleSpaceBar并给它一个圆形 BorderRadius:
flexibleSpace: ClipRRect(
borderRadius: BorderRadius.vertical(
bottom: Radius.circular(20.0),
),
child: FlexibleSpaceBar(
...
),
),
推荐阅读
- ruby-on-rails - 如何在编辑时在 WYSIWYG Trix 编辑器上保留自定义选项(Ruby on Rails、Actiontext)
- angular - 在直接编辑从 url/posts/userId=1 到 url/posts/userId=2 的 url 时按 id 获取数据的问题
- python-3.x - 在 Python 中按特定关键字提取行(不使用 Pandas)
- ruby-on-rails - 会话变量 Rails
- python - 在 python 中使用 Winium (+ Selenium) 只允许我打开应用程序,但不会与之交互?
- swift - 裁剪图像,使其像 Snapchat 一样成为全屏
- r - 如何有效地比较不同列表中的项目?
- service-worker - 强制 PWA 通知仅在 Chrome for Mobile 中显示?
- git - 如何在不提交更改的情况下切换分支
- javascript - from react -router-dom 不会改变 URL