У меня есть столбец: заголовок с текстом, тело с изображением, нижний колонтитул с текстом, все виджеты имеют прозрачный фон.
Я хочу установить фон, используя размытие основного изображения, но продолжаю заходить в тупики.
В некоторых ситуациях это может быть прямым, но в моем сценарии изображение может иметь любой размер и соотношение сторон, и мне нужно обернуть эффект столбцом.
Вот две мои неудачные попытки:
Метод 1
У меня есть стек с изображением в качестве первого элемента, затем BackdropFilter с размытием ImageFilter, затем мой столбец.
Это работает, но изображение выпадает из-под столбца из-за размера изображения (который может быть любого размера).
Я хочу ограничить его высотой моей колонны.
return Container(
child: Stack(
alignment: AlignmentDirectional.topCenter,
children: <Widget>[
Positioned.fill(child: Image.network(_imgUrl)),
BackdropFilter(
filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0),
child: Container(
decoration: BoxDecoration(color: Colors.white.withOpacity(0.0)),
)),
Container(
child: Column(
mainAxisSize: MainAxisSize.min,
// https://stackoverflow.com/a/41846093/3429021
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Header(),
BodyPhoto(),
Footer()
],
),
),
],
),
Метод 2
Помещение столбца в Контейнер с DecoImage, который идеально подходит к размеру изображения, но у меня нет способа применить эффект размытия.
(_ streamItem - моя колонка, завернутая в контейнер)
body: Container(child: _streamItem,
decoration: new BoxDecoration(image: DecorationImage(
image: NetworkImage(_streamItem.imgUrl),
fit: BoxFit.cover)
)
)
Есть идеи?