Я пытаюсь скопировать дизайн экрана входа в систему, который мой дизайнер сделал для приложения.
Фоновое изображение использует blendMode из softLight, уловка в том, что цвет, с которым оно смешивается, является градиентным цветом. Во-вторых, на самом деле есть два слоя разных градиентов (один фиолетовый градиент, один синий градиент)
Исходное изображение:
Окончательное изображение градиента
Теперь я попытался использовать colorBlendMode, например,
Image.asset(
'assets/pioneer-party.jpg',
fit: BoxFit.cover,
color: Color(0xff0d69ff).withOpacity(1.0),
colorBlendMode: BlendMode.softLight,
),
Проблема в том, что свойство color принимает только один цвет.
Затем я попробовал 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]
),
),
),
Что дает мне несколько близкое к тому, что я хочу, но не совсем то, что мне нужно.
Кто-нибудь знает способ достижения этого?
EDIT:
Я также думал о смешивании двух изображений вместе, но не нашел способа сделать это, кроме использования непрозрачности или чего-то еще. В идеале хотелось бы, чтобы он отображался изначально, а не с использованием «хаков» для его достижения.