Я посмотрел на вопросы о флаттере, и вот что я собираюсь сделать: https://github.com/flutter/flutter/issues/13489
У меня есть 2 виджета круга.Они расположены в стеке и расположены как диаграмма Венна, так что они частично перекрывают друг друга:
final vennDiagram = Stack(
children: [
leftCircle,
rightCircle,
],
);
Я хочу добавить к ним красивую размытую «тень», поэтому я делаю копиюих и поместите эту копию за ними в другой стек, и примените размытие (см. this ).Теперь у меня есть:
Stack(
children: [
vennDiagramShadow, // essentially an offset copy of `vennDiagram`
blur, // BackdropFilter
vennDiagram,
],
)
Это выглядит великолепно - у меня есть диаграмма Венна с четкими краями и размытой "тенью" на заднем плане.
Но теперь допустим, я хочу каждый виджетбыть ответственным за свой собственный эффект «размытой тени» - например, я хочу, чтобы тень первого круга была более размытой (например, пользователь нажимает на одну сторону диаграммы Венна).Теперь я сделаю рефакторинг для:
final vennDiagram = Stack(
children: [
Stack(children: [leftCircleShadow, extraBlur, leftCircle]),
Stack(children: [rightCircleShadow, blur, rightCircle]),
],
);
В результате все под правым кругом будет размыто с blur
, потому что в стеке blur
.накладывает левый круг.На самом деле, я хочу, чтобы blur
.
влиял только на rightCircleShadow
. Как я могу выбирать виджеты размытия только в моем "локальном" стеке?Вместо родительского стека?