我正在尝试复制我的设计师为应用程序所做的登录屏幕设计。
背景图像使用 softLight 的 blendMode,关键是它混合的颜色是渐变色。其次实际上有两层不同的渐变(一层紫色渐变,一层蓝色渐变)
原图:
最终渐变图像
现在我尝试使用 colorBlendMode,例如
Image.asset(
'assets/pioneer-party.jpg',
fit: BoxFit.cover,
color: Color(0xff0d69ff).withOpacity(1.0),
colorBlendMode: BlendMode.softLight,
),
问题是颜色属性只采用单一颜色。
然后我尝试了 BoxDecoration,例如
DecoratedBox(
decoration: new BoxDecoration(
color: const Color(0xff7c94b6),
image: new DecorationImage(
fit: BoxFit.cover,
colorFilter: new ColorFilter.mode(Colors.purple.withOpacity(1.0), BlendMode.softLight),
image: new NetworkImage(
'http://www.allwhitebackground.com/images/2/2582-190x190.jpg',
),
),
),
),
这仍然给我留下了同样的问题。然后我尝试单独堆叠每一层,然后使用渐变来使其看起来接近设计,例如
Image.asset(
'assets/pioneer-party.jpg',
fit: BoxFit.cover,
color: Color(0xff0d69ff).withOpacity(1.0),
colorBlendMode: BlendMode.softLight,
),
DecoratedBox(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: FractionalOffset.topCenter,
end: FractionalOffset.bottomCenter,
colors: [
Color(0xff0d69ff).withOpacity(0.0),
Color(0xff0069ff).withOpacity(0.8),
],
),
),
),
DecoratedBox(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: FractionalOffset.topLeft,
end: FractionalOffset.bottomRight,
colors: [
Color(0xff692eff).withOpacity(0.8),
Color(0xff642cf4).withOpacity(0.8),
Color(0xff602ae9).withOpacity(0.8),
Color(0xff5224c8).withOpacity(0.8),
Color(0xff5e29e5).withOpacity(0.8),
],
stops: [0.0,0.25,0.5,0.75,1.0]
),
),
),
这让我有点接近我想要的,但不完全是我需要的。
有谁知道实现这一目标的方法?
编辑:
我也在考虑将这两个图像混合在一起,但除了使用不透明度或其他东西之外,还没有找到这样做的方法。理想情况下,希望它以原生方式呈现,而不是使用“hacks”来实现它。